हमम। यहां एक सूची समझ के साथ एक जवाब था, लेकिन यह गायब हो गया है।
यहाँ:
[i for i,x in enumerate(testlist) if x == 1]
उदाहरण:
>>> testlist
[1, 2, 3, 5, 3, 1, 2, 1, 6]
>>> [i for i,x in enumerate(testlist) if x == 1]
[0, 5, 7]
अद्यतन:
ठीक है, यदि आप एक जनरेटर अभिव्यक्ति चाहते हैं, हम एक जनरेटर अभिव्यक्ति होगा। यहाँ सूची समझ फिर, एक में पाश के लिए है:
>>> for i in [i for i,x in enumerate(testlist) if x == 1]:
... print i
...
0
5
7
अब हम एक जनरेटर का निर्माण होगा ...
>>> (i for i,x in enumerate(testlist) if x == 1)
<generator object at 0x6b508>
>>> for i in (i for i,x in enumerate(testlist) if x == 1):
... print i
...
0
5
7
और niftily पर्याप्त है, हम एक चर है कि प्रदान कर सकते हैं, और इसका इस्तेमाल करते हैं वहाँ से ...
>>> gen = (i for i,x in enumerate(testlist) if x == 1)
>>> for i in gen: print i
...
0
5
7
और मैं FORTRAN लिखने के लिए प्रयोग किया जाता है सोचने के लिए।
यह आईएमओ का सबसे अच्छा जवाब है। यह स्पष्ट और संक्षेप में है, और आप वास्तव में सूचकांक मानों को कैप्चर करते हैं, इसलिए यह एक्स्टेंसिबल है (आप उन्हें प्रिंट कर सकते हैं, उन्हें किसी अन्य func पर भेज सकते हैं।) इत्यादि। केवल कई मैचों के मामलों के लिए जनरेटर अभिव्यक्ति का उपयोग करना है। http://is.gd/brzl – gotgenes
संभवतया 25 साल की पूछताछ प्रोग्रामिंग प्रोग्रामिंग के बाद, मुझे लगता है कि मुझे अंत में सुराग मिल रहा है। सूची समझ डा बम है। –
एकल शब्द चर आपके कोड को समझना कठिन बनाते हैं, खासकर प्रोग्रामिंग उदाहरणों में। – mikemaccana