Який найшвидший спосіб дізнатися, чи існує в списку значення (список з мільйонами значень) і який його індекс?
Я знаю, що всі значення в списку є унікальними, як у цьому прикладі.
Перший метод, який я спробую, - це (3,8 сек у моєму реальному коді):
a = [4,2,3,1,5,6]
if a.count(7) == 1:
b=a.index(7)
"Do something with variable b"
Другий метод, який я пробую, - це (2 рази швидше: 1,9 сек для мого реального коду):
a = [4,2,3,1,5,6]
try:
b=a.index(7)
except ValueError:
"Do nothing"
else:
"Do something with variable b"
Запропоновані методи від користувача переповнення стека (2,74 сек для мого реального коду):
a = [4,2,3,1,5,6]
if 7 in a:
a.index(7)
У моєму реальному коді перший метод займає 3,81 сек, а другий - 1,88 сек. Це гарне поліпшення, але:
Я початківець з Python / scripting, і чи є більш швидкий спосіб зробити те ж саме і заощадити більше часу на обробку?
Більш конкретне пояснення для моєї заявки:
В API Blender я можу отримати доступ до списку частинок:
particles = [1, 2, 3, 4, etc.]
Звідти я можу отримати доступ до місцезнаходження частинок:
particles[x].location = [x,y,z]
І для кожної частинки я перевіряю, чи існує сусід, шукаючи кожне місце розташування частинок так:
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
модуль