जैसा कि आपके पहले प्रश्न के लिए: वह कोड पूरी तरह से ठीक है और काम करना चाहिए अगर item
अंदर के तत्वों में से एक के बराबर है myList
। शायद तुम एक स्ट्रिंग है नहीं करता है खोजने की कोशिश बिल्कुल आइटम या हो सकता है आप एक नाव मूल्य जो अशुद्धि से ग्रस्त उपयोग कर रहे हैं में से एक से मेल खाते हैं।
आपके दूसरे प्रश्न के रूप में: यदि सूची में चीजों को "ढूंढ" लिया जाए तो वास्तव में कई संभावित तरीके हैं।
अगर कुछ अंदर है तो जाँच करना
यह वह उपयोग मामला है जिसका आप वर्णन करते हैं: यह जाँचना कि क्या किसी सूची के अंदर है या नहीं। जैसा कि आप जानते हैं, आप उसके लिए in
ऑपरेटर का उपयोग कर सकते हैं :
3 in [1, 2, 3] # => True
एक संग्रह को छानना
यही है, सभी तत्वों को एक अनुक्रम में खोजना जो एक निश्चित स्थिति को पूरा करते हैं। आप उसके लिए सूची की समझ या जनरेटर के भाव का उपयोग कर सकते हैं:
matches = [x for x in lst if fulfills_some_condition(x)]
matches = (x for x in lst if x > 6)
उत्तरार्द्ध एक जनरेटर लौटाएगा जिसे आप एक प्रकार की आलसी सूची के रूप में कल्पना कर सकते हैं जो केवल इसके माध्यम से पुनरावृति करते ही बनाया जाएगा। वैसे, पहले वाले के बराबर है
matches = filter(fulfills_some_condition, lst)
पायथन 2. यहाँ आप काम पर उच्च-क्रम के कार्य देख सकते हैं। पायथन 3 में, filter
एक सूची नहीं लौटाता है, लेकिन एक जनरेटर जैसी वस्तु।
पहली घटना का पता लगाना
यदि आप केवल पहली चीज चाहते हैं जो एक शर्त से मेल खाती है (लेकिन आप नहीं जानते कि यह अभी तक क्या है), तो लूप के लिए उपयोग करना ठीक है (संभवतः else
क्लॉज का उपयोग करके , जो वास्तव में अच्छी तरह से ज्ञात नहीं है)। आप भी उपयोग कर सकते हैं
next(x for x in lst if ...)
जो पहला मैच लौटाएगा या StopIteration
अगर कोई नहीं मिला तो उठाएगा । वैकल्पिक रूप से, आप उपयोग कर सकते हैं
next((x for x in lst if ...), [default value])
किसी वस्तु का स्थान खोजना
सूचियों के लिए, ऐसी index
विधि भी है जो कभी-कभी उपयोगी हो सकती है यदि आप जानना चाहते हैं कि सूची में एक निश्चित तत्व कहां है:
[1,2,3].index(2) # => 1
[1,2,3].index(4) # => ValueError
हालाँकि, ध्यान दें कि यदि आपके पास डुप्लिकेट है, तो .index
हमेशा सबसे कम इंडेक्स देता है: ......
[1,2,3,2].index(2) # => 1
यदि डुप्लिकेट हैं और आप सभी अनुक्रमित चाहते हैं तो आप enumerate()
इसके बजाय उपयोग कर सकते हैं :
[i for i,x in enumerate([1,2,3,2]) if x==2] # => [1, 3]
myList
।