Một giải pháp khác có thể là sử dụng numpy
sẽ rất hiệu quả, cho các danh sách lớn thậm chí còn hiệu quả hơn so với danh sách hiểu hoặc vòng lặp.
import numpy as np
a = np.arange(5.0) # a --> array([0., 1., 2., 3., 4.])
# numpy operates on arrays element by element
#
b =3.*a # b --> array([0., 3., 6., 9., 12.])
Đây là một thao tác khá đơn giản nhưng bạn có thể phức tạp hơn bằng cách sử dụng mảng đơn giản như một đối số trong công thức. Đối với mảng lớn, điều này có thể nhanh hơn nhiều so với việc đọc danh sách và nó làm cho mã sạch hơn và dễ đọc hơn (không cần phải tạo một hàm để ánh xạ trong một danh sách hiểu). Bạn cũng có thể sử dụng chỉ mục và cắt điều chỉnh những gì bạn muốn làm:
Nếu bạn muốn có quyền truy cập vào các vị trí chỉ số thực tế sử dụng ndenumerate
# b is as above
for i, x in np.ndenumerate(b):
print i, x
Kết quả của điều này cho vòng lặp là:
(0,) 0.0
(1,) 3.0
(2,) 6.0
(3,) 9.0
(4,) 12.0
LƯU Ý: chỉ mục được trả về dưới dạng bộ dữ liệu bằng cách numpy để xử lý thứ nguyên bổ sung. Ở đây chúng ta chỉ có một chiều duy nhất để bạn phải giải nén tuple để lấy chỉ mục của phần tử.
Nguồn
2012-06-07 12:57:56
vui lòng tìm kiếm bài đăng trên diễn đàn. Điều này đã được trả lời một triệu lần – sulabh
có thể trùng lặp của [Iterate một danh sách với các chỉ mục trong python] (http: // stackoverflow.com/questions/126524/iterate-a-list-với-index-in-python) – jamylak
@sulabh: Tôi không tìm thấy bản sao chính xác của câu hỏi này. Vui lòng liên kết giống nhau. Các câu hỏi ở đây tôi hỏi là một so sánh giữa hai cách khác nhau của iterating một danh sách, và một đề nghị trong đó là tốt hơn. – mankand007