Cách nhanh nhất để biết nếu một giá trị tồn tại trong danh sách (danh sách có hàng triệu giá trị trong đó) và chỉ mục của nó là gì?
Tôi biết rằng tất cả các giá trị trong danh sách là duy nhất như trong ví dụ này.
Phương pháp đầu tiên tôi thử là (3,8 giây trong mã thực của tôi):
a = [4,2,3,1,5,6]
if a.count(7) == 1:
b=a.index(7)
"Do something with variable b"
Phương pháp thứ hai tôi thử là (nhanh hơn 2 lần: 1,9 giây cho mã thực của tôi):
a = [4,2,3,1,5,6]
try:
b=a.index(7)
except ValueError:
"Do nothing"
else:
"Do something with variable b"
Các phương thức được đề xuất từ người dùng Stack Overflow (2,74 giây cho mã thực của tôi):
a = [4,2,3,1,5,6]
if 7 in a:
a.index(7)
Trong mã thực của tôi, phương thức đầu tiên mất 3,81 giây và phương thức thứ hai mất 1,88 giây. Đó là một cải tiến tốt, nhưng:
Tôi là người mới bắt đầu với Python / scripting, và có cách nào nhanh hơn để làm những việc tương tự và tiết kiệm thời gian xử lý hơn không?
Giải thích cụ thể hơn cho ứng dụng của tôi:
Trong API Blender tôi có thể truy cập danh sách các hạt:
particles = [1, 2, 3, 4, etc.]
Từ đó, tôi có thể truy cập vị trí của hạt:
particles[x].location = [x,y,z]
Và với mỗi hạt tôi kiểm tra xem hàng xóm có tồn tại hay không bằng cách tìm kiếm từng vị trí hạt như vậy:
if [x+1,y,z] in particles.location
"Find the identity of this neighbour particle in x:the particle's index
in the array"
particles.index([x+1,y,z])
bisect
mô-đun