Quel est le moyen le plus rapide de savoir si une valeur existe dans une liste (une liste contenant des millions de valeurs) et quel est son index?
Je sais que toutes les valeurs de la liste sont uniques comme dans cet exemple.
La première méthode que j'essaie est (3,8 secondes dans mon vrai code):
a = [4,2,3,1,5,6]
if a.count(7) == 1:
b=a.index(7)
"Do something with variable b"
La deuxième méthode que j'essaie est (2x plus rapide: 1,9 sec pour mon vrai code):
a = [4,2,3,1,5,6]
try:
b=a.index(7)
except ValueError:
"Do nothing"
else:
"Do something with variable b"
Méthodes proposées par l'utilisateur Stack Overflow (2,74 s pour mon vrai code):
a = [4,2,3,1,5,6]
if 7 in a:
a.index(7)
Dans mon code réel, la première méthode prend 3,81 secondes et la seconde méthode prend 1,88 secondes. C'est une bonne amélioration, mais:
Je suis un débutant en Python / scripting, et existe-t-il un moyen plus rapide de faire les mêmes choses et d'économiser plus de temps de traitement?
Explication plus spécifique pour mon application:
Dans l'API Blender, je peux accéder à une liste de particules:
particles = [1, 2, 3, 4, etc.]
De là, je peux accéder à l'emplacement d'une particule:
particles[x].location = [x,y,z]
Et pour chaque particule, je teste si un voisin existe en recherchant chaque emplacement de particule comme ceci:
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
module