What is the fastest way to know if a value exists in a list (a list with millions of values in it) and what its index is?
I know that all values in the list are unique as in this example.
The first method I try is (3.8 sec in my real code):
a = [4,2,3,1,5,6]
if a.count(7) == 1:
b=a.index(7)
"Do something with variable b"
The second method I try is (2x faster: 1.9 sec for my real code):
a = [4,2,3,1,5,6]
try:
b=a.index(7)
except ValueError:
"Do nothing"
else:
"Do something with variable b"
Proposed methods from Stack Overflow user (2.74 sec for my real code):
a = [4,2,3,1,5,6]
if 7 in a:
a.index(7)
In my real code, the first method takes 3.8Best Answerec and the second method takes 1.88 sec.
It’s a good improvement, but:
I’m a beginner with Python/scripting, and is there a faster way to do the same things and save more processing time?
More specific explanation for my application:
In the Blender API I can access a list of particles:
particles = [1, 2, 3, 4, etc.]
From there, I can access a particle’s location:
particles[x].location = [x,y,z]
And for each particle I test if a neighbour exists by searching each particle location like so:
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])