Tôi đang gặp sự cố khi tạo một mảng số float. Tôi có một vòng lặp đang quét các hàng của bảng thuộc tính và trích xuất các số từ bảng đó. SARAarea, truearea và rasterarea đều được trích xuất từ một bảng thuộc tính và chúng phải là số float. Tôi đang cố gắng sử dụng những con số này và thực hiện các phép tính với chúng rồi chèn lại vào bảng thuộc tính. Vấn đề chính của tôi là thêm số float vào danh sách. Tôi liên tục nhận được thông báo lỗi rằng float không thể lặp lại hoặc float không phải là thuộc tính để nối thêm hoặc mở rộng. Cách tốt nhất để làm việc này là gì? . Nhưng hàm searchcursor chỉ cho phép mình tạo 2 vòng lặp riêng biệt vì có seachCursor và UpdateCursor, nó chỉ cho phép mình làm 1 lần thôi
Đây là nỗ lực của tôi trong việc khởi tạo danh sách
approxTen=['f']
approxremaining=['f']
lessperc=['f']
moreperc=['f']
Đây là nơi tôi nhận được lỗi của mình. Mã nằm trong vòng lặp while của searchCursor. "Trong khi hàng. "
approxTen=[SARAarea*truearea]/rasterarea
approxremaining=truearea-approxTen
lessperc=[approxTen/truearea]*100
moreperc=[approxremaining/truearea]*100
approxTen.append[approxTen]
approxremaining.append[approxremaining]
lessperc.append[lessperc]
moreperc.append[moreperc]
Lỗi phổ biến tôi nhận được dưới đây. Dòng 50 là dòng 7 trong đoạn mã trên. Tôi đã thử mở rộng và nối thêm nhưng không hoạt động và tôi đã thử đặt float[] xung quanh các giá trị của approxTen và phần còn lại của chúng nhưng nó không hoạt động
Ví dụ. approxremaining= float[truearea-approxTen]
Đây là cách tôi chèn nó trở lại vào bảng thuộc tính. Dưới đây là một vòng lặp riêng biệt sau đó mã trên. Tôi đang cố lặp qua danh sách và thêm nó vào bảng thuộc tính
Một danh sách có thể lưu trữ nhiều phần tử của các kiểu dữ liệu khác nhau. Do đó, chúng tôi có thể gặp phải các tình huống phải thay đổi loại phần tử trong danh sách. Ví dụ: chúng ta có thể có một danh sách các chuỗi, trong đó mỗi chuỗi ở dạng giá trị float
Trong hướng dẫn này, chúng ta sẽ chuyển đổi các phần tử của danh sách từ chuỗi thành float trong Python
Sử dụng vòng lặp for
để chuyển đổi tất cả các mục trong danh sách thành nổi trong Python
Chúng ta có thể sử dụng vòng lặp for
để lặp qua danh sách và chuyển đổi từng phần tử thành kiểu float bằng cách sử dụng hàm float[]
Sau đó, chúng ta có thể thêm từng phần tử vào danh sách mới bằng cách sử dụng hàm append[]
Ví dụ,
lst = ["1.5","2.0","2.5"]
float_lst = []
for item in lst:
float_lst.append[float[item]]
print[float_lst]
đầu ra
Sử dụng Phương pháp hiểu danh sách để chuyển đổi tất cả các mục trong danh sách thành nổi trong Python
Phương thức hiểu danh sách tạo một danh sách mới trong một dòng mã. Nó đạt được kết quả tương tự nhưng nhỏ gọn và thanh lịch hơn
Ví dụ,
lst = ["1.2", "3.4", "5.6"]
float_lst = [float[item] for item in lst]
print[float_lst]
đầu ra
Sử dụng hàm numpy.float_[]
để chuyển đổi các mục trong danh sách thành nổi trong Python
Hàm numpy.float_[]
tạo một mảng
lst = ["1.2", "3.4", "5.6"]
float_lst = [float[item] for item in lst]
print[float_lst]
0 với các giá trị float. Chúng ta có thể chuyển danh sách cho hàm này để tạo một mảng có giá trị float. Sau đó chúng ta có thể chuyển đổi mảng này thành một danh sách bằng cách sử dụng hàm lst = ["1.2", "3.4", "5.6"]
float_lst = [float[item] for item in lst]
print[float_lst]
1Ví dụ,
import numpy as np
lst = ["1.5","2.0","2.5"]
float_lst = list[np.float_[lst]]
print[float_lst]
đầu ra
Sử dụng hàm lst = ["1.2", "3.4", "5.6"]
float_lst = [float[item] for item in lst]
print[float_lst]
2 để chuyển đổi các mục trong danh sách thành nổi trong Python
lst = ["1.2", "3.4", "5.6"]
float_lst = [float[item] for item in lst]
print[float_lst]
Điều này tương tự như phương pháp trước. Thay vì sử dụng hàm numpy.float_[]
, chúng ta sẽ sử dụng hàm
lst = ["1.2", "3.4", "5.6"]
float_lst = [float[item] for item in lst]
print[float_lst]
2 và chỉ định tham số lst = ["1.2", "3.4", "5.6"]
float_lst = [float[item] for item in lst]
print[float_lst]
5 là lst = ["1.2", "3.4", "5.6"]
float_lst = [float[item] for item in lst]
print[float_lst]
6 Hàm nhận một lần lặp và trả về tổng số dấu phẩy động chính xác của các giá trị trong lần lặp
Phương pháp tránh mất độ chính xác bằng cách theo dõi nhiều tổng riêng phần trung gian
Tính tổng danh sách các số float được gói trong chuỗi
Để lấy tổng danh sách các số float được gói trong chuỗi
- Sử dụng hàm
map[]
để chuyển đổi từng chuỗi thành dấu phẩy - Truyền kết quả cho phương thức
math.fsum[]
- Phương thức
math.fsum[]
sẽ trả về tổng của các số float trong iterable
Chúng tôi đã sử dụng hàm map
để chuyển đổi từng chuỗi thành số dấu phẩy động
Hàm nhận một hàm và một iterable làm đối số và gọi hàm với mỗi mục của iterable
Hàm chuyển đổi từng chuỗi thành float bằng cách chuyển chúng đến lớp float[]
Sau khi chúng tôi có một số có thể lặp lại các số dấu phẩy động, chúng tôi có thể sử dụng phương pháp math.fsum[]
để lấy tổng mà không làm mất độ chính xác
Tính tổng danh sách không chứa giá trị nào trong Python
Để tổng hợp một danh sách có chứa các giá trị total = math.fsum[list_of_floats]
0
- Sử dụng hàm
total = math.fsum[list_of_floats]
1 để xóa các giá trịtotal = math.fsum[list_of_floats]
0 khỏi danh sách - Truyền đối tượng
total = math.fsum[list_of_floats]
3 cho hàmtotal = math.fsum[list_of_floats]
4 - Hàm
total = math.fsum[list_of_floats]
4 sẽ tính tổng các số từ danh sách
Chúng tôi đã sử dụng hàm total = math.fsum[list_of_floats]
1 để xóa các giá trị total = math.fsum[list_of_floats]
0 khỏi danh sách
Hàm nhận một hàm và một iterable làm đối số và xây dựng một iterator từ các phần tử của iterable mà hàm trả về giá trị trung thực
Nếu bạn vượt qua total = math.fsum[list_of_floats]
0 cho đối số chức năng, tất cả các phần tử giả mạo của lần lặp sẽ bị xóa
Tất cả các giá trị không trung thực được coi là giả. Các giá trị giả trong Python là
- hằng số được xác định là sai.
total = math.fsum[list_of_floats]
0 vàmath.fsum[]
0 math.fsum[]
1 [không] của bất kỳ loại số nào- trình tự và bộ sưu tập trống.
math.fsum[]
2 [chuỗi trống],math.fsum[]
3 [bộ trống],math.fsum[]
4 [danh sách trống],math.fsum[]
5 [từ điển trống],math.fsum[]
6 [bộ trống],math.fsum[]
7 [phạm vi trống]
Bước cuối cùng là truyền đối tượng total = math.fsum[list_of_floats]
3 cho hàm math.fsum[]
9
Hàm nhận một lần lặp, tính tổng các phần tử của nó từ trái sang phải và trả về tổng
Hàm total = math.fsum[list_of_floats]
4 nhận 2 đối số sau
math.fsum[]
1 và các mục của có thể lặp lại. total = math.fsum[list_of_floats]
4 mặc định là math.fsum[]
1 [tùy chọn]Tính tổng của Danh sách bằng cách sử dụng reduce[]
Bạn cũng có thể sử dụng hàm math.fsum[]
4 để tính toán total = math.fsum[list_of_floats]
4 của một danh sách
Hàm math.fsum[]
4 có thể được sử dụng để gọi hàm rút gọn trên mỗi phần tử và tạo ra một giá trị duy nhất
Chúng tôi đã sử dụng hàm math.fsum[]
4 để tổng hợp một danh sách
Hàm nhận 3 tham số sau
NameDescripfunctionMột hàm nhận 2 tham số - giá trị tích lũy và giá trị từ iterable. iterableMỗi phần tử trong iterable sẽ được chuyển thành đối số cho hàm. bộ khởi tạoMột giá trị bộ khởi tạo tùy chọn được đặt trước các mục của phép lặp trong phép tínhHàm math.fsum[]
8 trong ví dụ lấy giá trị tích lũy và giá trị hiện tại làm tham số và trả về tổng của hai
Kết quả cuối cùng của việc chạy hàm rút gọn trên các mục trong danh sách là một giá trị duy nhất - tổng
Nếu chúng tôi cung cấp một giá trị cho đối số math.fsum[]
9, nó sẽ được đặt trước các mục của iterable trong phép tính
Bạn cũng có thể trích xuất hàm và sử dụng một vài lệnh gọi map[]
0 để hiểu rõ hơn về cách thức hoạt động của map[]
1
Trong ví dụ này, chúng tôi đã chuyển math.fsum[]
1 cho đối số trình khởi tạo, vì vậy giá trị của map[]
3 sẽ là math.fsum[]
1 trong lần lặp đầu tiên
Giá trị của map[]
3 sẽ được đặt thành phần tử đầu tiên trong iterable nếu chúng ta không chuyển giá trị cho math.fsum[]
9
Nếu map[]
7 trống và math.fsum[]
9 được cung cấp, thì math.fsum[]
9 được trả lại
Danh sách trong ví dụ trên trống, vì vậy giá trị của trình khởi tạo [math.fsum[]
1] được trả về
Nếu math.fsum[]
9 không được cung cấp và iterable chỉ chứa mục math.fsum[]
2, thì mục đầu tiên được trả về
Danh sách trong ví dụ chỉ chứa một phần tử duy nhất và chúng tôi không cung cấp giá trị cho math.fsum[]
9, vì vậy hàm math.fsum[]
4 trả về phần tử danh sách