मैं जनरेटर का उपयोग कर रहा इस सरल उदाहरण की तरह खोजें सूचियों में प्रदर्शन करने के लिए:स्टॉपइटरेशन के बजाए कोई भी वापस करने के लिए पाइथन जनरेटर कैसे प्राप्त कर सकता हूं?
>>> a = [1,2,3,4]
>>> (i for i, v in enumerate(a) if v == 4).next()
3
(बस उदाहरण थोड़ा फ्रेम करने के लिए, मैं ऊपर एक की तुलना में बहुत ज्यादा देर सूचियों का उपयोग कर रहा हूँ, और प्रविष्टियों एक हैं थोड़ा और अधिक जटिल int
से। मैं इसे इस तरह से तो पूरे सूचियों अब हर बार मैं उन्हें खोज)
चल नहीं की जाएगी करना अगर मैं बजाय i == 666
है कि बदल जाएगा, यह एक StopIteration
वापसी होगी क्योंकि यह कर सकते हैं ' में कोई भी 666
प्रविष्टि नहीं ढूंढें।
मैं इसे कैसे None
बजाय वापसी कर सकते हैं? मैं इसे try ... except
खंड में लपेट सकता हूं, लेकिन क्या ऐसा करने के लिए एक और अधिक पागल तरीका है?
मैं पूछता हूँ तुम क्यों बातों के लिए खोज करने के लिए जनरेटर का उपयोग कर रहे कर सकते हैं? –
यदि आप पहले से पारित कुछ की खोज करते हैं तो आप क्या होने की उम्मीद करते हैं? क्यों न केवल 'पायथनिक' तरीके का उपयोग करें जैसे 'अगर मैं इन: ...'? –
@ मैनी डी, 'अगर मैं किसी में मदद नहीं करता हूं तो आप पाए गए आइटम की अनुक्रमणिका प्राप्त करना चाहते हैं। – senderle