यह जानने का सबसे तेज़ तरीका क्या है कि किसी सूची में मान मौजूद है (इसमें लाखों मानों वाली सूची) और इसका सूचकांक क्या है?
मुझे पता है कि सूची में सभी मूल्य इस उदाहरण में अद्वितीय हैं।
मेरे द्वारा आजमाया गया पहला तरीका (मेरे वास्तविक कोड में 3.8 सेकंड):
a = [4,2,3,1,5,6]
if a.count(7) == 1:
b=a.index(7)
"Do something with variable b"
दूसरा तरीका जो मैं आजमाता हूं (2x तेज़: 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 सेकंड लगते हैं। यह एक अच्छा सुधार है, लेकिन:
मैं पायथन / स्क्रिप्टिंग के साथ शुरुआत कर रहा हूं, और क्या एक ही तरीके से काम करने और अधिक प्रसंस्करण समय बचाने का एक तेज़ तरीका है?
मेरे आवेदन के लिए अधिक विशिष्ट अन्वेषण:
ब्लेंडर एपीआई में मैं कणों की एक सूची का उपयोग कर सकता हूं:
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
मॉड्यूल का उपयोग करें