2010-07-01 48 views
166

के लिए एक अजगर के अंदर पाश संख्या प्राप्त एक अजगर for पाश में है कि एक सूची से अधिक दोहराता हम लिख सकते हैं:पाश

for item in list: 
    print item 

और यह बड़े करीने से सूची के सभी तत्वों के माध्यम से चला जाता है। क्या लूप के भीतर जानने का कोई तरीका है कि अब तक कितनी बार मैं लूपिंग कर रहा हूं? उदाहरण के लिए, मैं एक सूची लेना चाहता हूं और दस तत्वों को संसाधित करने के बाद मैं उनके साथ कुछ करना चाहता हूं।

count=0 
for item in list: 
    print item 
    count +=1 
    if count % 10 == 0: 
     print 'did ten' 

या::

for count in range(0,len(list)): 
    print list[count] 
    if count % 10 == 0: 
     print 'did ten' 

वहाँ एक बेहतर तरीका (जैसे for item in list) अब तक पुनरावृत्तियों की संख्या प्राप्त करने है

विकल्प के बारे में मैं सोचा कि कुछ की तरह हो सकता है?

+0

तुम भी मात्रा में एक सूची से अधिक पुनरावृत्ति के जवाब में रुचि हो सकती: http://stackoverflow.com/questions/434287/what-is-the-most-pythonic-way-to- iterate-over-a-list-in-chunks –

+1

संभावित डुप्लिकेट [पाइथन में सूचकांक तक पहुंचने के लिए] [http://stackoverflow.com/questions/522563/accessing-the-index-in-python-for-loops) –

उत्तर

396

pythonic तरीका enumerate उपयोग करने के लिए है:

for idx,item in enumerate(list): 
0

का उपयोग कर itertools.count([n])

+2

मुझे यकीन नहीं है कि आप यहां गिनती का उपयोग कैसे करेंगे। गणना संख्याओं के अनुक्रम उत्पन्न करने के लिए प्रयोग किया जाता है। –

+0

लेकिन यह अगले पुनरावृत्ति के लिए मान को कैसे रीसेट करेगा। Itertools.count() का उपयोग करना संभव नहीं है। – javed

43

निक के साथ सहमत का प्रयास करें। यहां अधिक विस्तृत कोड है।

#count=0 
for idx, item in enumerate(list): 
    print item 
    #count +=1 
    #if count % 10 == 0: 
    if (idx+1) % 10 == 0: 
     print 'did ten' 

मैंने आपके कोड में गिनती चर को टिप्पणी की है।

+0

सहमत हुए। मुझे इसे सही करने दें। –

+0

आप 0 के बजाय 1 के साथ गणना शुरू करने के लिए 'एन्यूमेरेट' के वैकल्पिक' स्टार्ट 'पैरामीटर का भी उपयोग कर सकते हैं, फिर भी मैं' idx' के बजाय ओपी का नाम 'गिनती' का उपयोग करूंगा। –

+0

मुझे नहीं पता था कि एक वैकल्पिक प्रारंभ पैरामीटर है। जानकार अच्छा लगा। धन्यवाद –

0

मैं नहीं बल्कि पुराने सवाल जानते हैं, लेकिन .... भर में दूसरी बात यह देख आया था इसलिए मैं अपने शॉट देने के:

[each*2 for each in [1,2,3,4,5] if each % 10 == 0]) 
1

यह भी संभव zip() का उपयोग कर रहा है।

for i, item in zip(range(len(my_list)), my_list): 
+0

हालांकि बड़े पैमाने पर iterators के साथ इस दृष्टिकोण का उपयोग नहीं करते हैं .. – wom