मेरे पास कोड है जो कुछ इस तरह दिखता है:
thing_index = thing_list.index(thing)
otherfunction(thing_list, thing_index)
ठीक है, इसलिए यह सरल है लेकिन आपको इसका विचार है। अब thing
वास्तव में सूची में नहीं हो सकता है, जिस स्थिति में मैं -1 पास करना चाहता हूं thing_index
। अन्य भाषाओं में यह वही है जो आप index()
वापस लौटने की उम्मीद करेंगे अगर यह तत्व नहीं मिला। वास्तव में यह एक फेंकता है ValueError
।
मैं ऐसा कर सकता था:
try:
thing_index = thing_list.index(thing)
except ValueError:
thing_index = -1
otherfunction(thing_list, thing_index)
लेकिन यह गंदा लगता है, साथ ही मुझे नहीं पता कि ValueError
क्या किसी और कारण से उठाया जा सकता है। मैं जनरेटर कार्यों के आधार पर निम्नलिखित समाधान के साथ आया था, लेकिन यह थोड़ा जटिल लगता है:
thing_index = ( [(i for i in xrange(len(thing_list)) if thing_list[i]==thing)] or [-1] )[0]
क्या एक ही तरीके से प्राप्त करने के लिए एक क्लीनर तरीका है? मान लें कि सूची क्रमबद्ध नहीं है।
str.find
तरीका है जो वास्तव में ऐसा करता है: -1
जब विषय में सुई नहीं मिलती है तो वह वापस लौटता है।
str.index()
यदि खोज स्ट्रिंग नहीं मिली है तो एक अपवाद को फेंक दें।
thing_index
।" - यह निश्चित रूप से संयुक्त राष्ट्र के पाइथोनिक है। एक ऑपरेशन के सफल न होने की स्थिति में (अर्थहीन) टोकन मूल्य पास करना - पर अपवाद है - अपवाद वास्तव में यहाँ सही तरीका है। विशेष रूप से चूंकिthing_list[-1]
एक वैध अभिव्यक्ति है, जिसका अर्थ सूची में अंतिम प्रविष्टि है।