Qual é a maneira mais rápida de saber se existe um valor em uma lista (uma lista com milhões de valores) e qual é o seu índice?
Eu sei que todos os valores na lista são únicos, como neste exemplo.
O primeiro método que eu tento é (3,8 segundos no meu código real):
a = [4,2,3,1,5,6]
if a.count(7) == 1:
b=a.index(7)
"Do something with variable b"
O segundo método que eu tento é (2x mais rápido: 1,9 segundos para o meu código real):
a = [4,2,3,1,5,6]
try:
b=a.index(7)
except ValueError:
"Do nothing"
else:
"Do something with variable b"
Métodos propostos pelo usuário do Stack Overflow (2,74 s para o meu código real):
a = [4,2,3,1,5,6]
if 7 in a:
a.index(7)
No meu código real, o primeiro método leva 3,81 segundos e o segundo método 1,88 segundos. É uma boa melhoria, mas:
Sou iniciante em Python / script e existe uma maneira mais rápida de fazer as mesmas coisas e economizar mais tempo de processamento?
Explicações mais específicas para minha aplicação:
Na API do Blender, posso acessar uma lista de partículas:
particles = [1, 2, 3, 4, etc.]
De lá, eu posso acessar a localização de uma partícula:
particles[x].location = [x,y,z]
E para cada partícula, testo se existe um vizinho pesquisando cada local da partícula da seguinte maneira:
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ódulo