Какой самый быстрый способ узнать, существует ли значение в списке (список с миллионами значений в нем) и каков его индекс?
Я знаю, что все значения в списке уникальны, как в этом примере.
Первый метод, который я пробую, - это (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"
Предлагаемые методы от пользователя Stack Overflow (2,74 с для моего реального кода):
a = [4,2,3,1,5,6]
if 7 in a:
a.index(7)
В моем реальном коде первый метод занимает 3,81 секунды, а второй - 1,88 секунды. Это хорошее улучшение, но:
Я новичок в Python / scripting, и есть ли более быстрый способ сделать то же самое и сэкономить больше времени на обработку?
Более конкретное объяснение для моего приложения:
В Blender API я могу получить доступ к списку частиц:
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
модуль