मुझे लगता है कि अलग 'खोज' और 'इंडेक्स' विधियों के लिए तर्क पर्याप्त नहीं है कि वे काफी अलग नहीं हैं। सूची में मांग की गई वस्तु मौजूद होने पर दोनों एक ही चीज़ वापस कर देंगे (यह दो स्ट्रिंग विधियों के बारे में सच है); यदि मांग की गई सूची सूची/स्ट्रिंग में नहीं है तो वे अलग-अलग होते हैं; हालांकि आप किसी अन्य से खोजने/सूचकांक में से किसी एक को आसानी से बना सकते हैं। यदि आप अन्य भाषाओं से आ रहे हैं, तो यह एक गैर-त्रुटि स्थिति के लिए अपवादों को उठाने और पकड़ने के लिए खराब शिष्टाचार प्रतीत हो सकता है, जिसे आप आसानी से परीक्षण कर सकते हैं, लेकिन पायथन में, इसे अक्सर शूट करने के लिए अधिक पायथनिक माना जाता है और बाद में प्रश्न पूछता है , इस तरह के परीक्षणों के बजाय अपवाद हैंडलिंग का उपयोग करने के लिए (उदाहरण: Better to 'try' something and catch the exception or test if its possible first to avoid an exception?)।
मैं यह एक अच्छा विचार 'लगता है' 'में' 'सूचकांक' और से बाहर का निर्माण करने के लिए नहीं लगता है, जैसे
if foo in my_list:
foo_index = my_list.index(foo)
else:
foo_index = -1 # or do whatever else you want
दोनों में और सूचकांक एक हे की आवश्यकता होगी क्योंकि (एन) के ऊपर से गुजरती सूचि।
बेहतर/'सूचकांक' का बनाने के लिए 'खोज' और कोशिश पकड़ है, जैसे:,
try:
foo_index = my_list.index(foo)
catch ValueError:
foo_index = -1 # or do whatever else you want
अब के रूप में क्यों सूची (केवल सूचकांक के साथ) इस तरह से बनाया गया था, और स्ट्रिंग बनाया गया था दूसरी तरफ (अलग इंडेक्स और ढूंढें) ... मैं नहीं कह सकता।
यह प्रश्न इस सूची के बराबर है: "112131" .ind ("1213") => 1' यानी '[1,1,2,1,3,1]। ढूँढें ([1,2 , 1,3]) => 1' - यदि आप इसे * रैखिक समय में करना चाहते हैं * आपको स्ट्रिंग मिलान करने वाले एल्गोरिदम में से एक को स्वयं लागू करना होगा, जो इतना आसान नहीं है। –