पायथन में अनुक्रमित के साथ एक सूची Iterate


203

मैं शपथ ले सकता हूं कि मैंने फ़ंक्शन (या विधि) को देखा है जो एक सूची लेता है, इस तरह से [3, 7, 19]और इसे ट्यूपल्स की पुनरावृत्त सूची में बनाता है, जैसे: [(0,3), (1,7), (2,19)]इसके बजाय इसका उपयोग करने के लिए:

for i in range(len(name_of_list)):
    name_of_list[i] = something

लेकिन मुझे नाम याद नहीं है और गुगली "इटर्स्ट लिस्ट" से कुछ नहीं मिलता।

जवाबों:



107

हां, यह enumerateसमारोह होगा! या बिंदु से अधिक, आपको करने की आवश्यकता है:

list(enumerate([3,7,19]))

[(0, 3), (1, 7), (2, 19)]

2
कभी-कभी लोग एक प्रश्न से संबंधित प्रश्न पूछते हैं जिसे वे वास्तव में चाहते हैं, अन्य समय में, वे कुछ हद तक अंधाधुंध होते हैं जो "सर्वश्रेष्ठ" का अर्थ है।
msw

3
और कभी-कभी लोग पूरे प्रश्न के बजाय केवल प्रश्न की पहली डेढ़ पंक्तियों को पढ़ते हैं। यदि आप दूसरी पंक्ति के अंत तक पहुँचते हैं, तो वह कहता है कि वह इसका उपयोग करना चाहता है for i in range(len(name_of_list)):जिसके कारण मुझे पहले भाग में जो दिखाया गया था उसके बजाय एक उदाहरण का उपयोग करने के लिए प्रदान किया गया था।
विंको वर्सालोविच

1
@HumphreyBogart क्योंकि लॉरेन बेकाल को अधिक वाचाल होना पसंद है।
जावदबा

25

यहां zipफ़ंक्शन का उपयोग करके एक और है।

>>> a = [3, 7, 19]
>>> zip(range(len(a)), a)
[(0, 3), (1, 7), (2, 19)]

10
enumerate()मुझे लगता है कि थोड़ा और अधिक सुरुचिपूर्ण है।
नाथन फेलमैन

14
@ नथन: लेकिन ज़िप () अधिक सामान्य है और सूचियों की मनमानी जोड़ी के लिए काम करता है, इसलिए यह जानना अच्छा है।
श्रीवत्सआर

8

यहाँ यह मानचित्र फ़ंक्शन का उपयोग करके एक समाधान है:

>>> a = [3, 7, 19]
>>> map(lambda x: (x, a[x]), range(len(a)))
[(0, 3), (1, 7), (2, 19)]

और सूची समझ का उपयोग कर एक समाधान:

>>> a = [3,7,19]
>>> [(x, a[x]) for x in range(len(a))]
[(0, 3), (1, 7), (2, 19)]

5

अजगर enumerateसमारोह आपकी आवश्यकताओं को पूरा करेगा

result = list(enumerate([1,3,7,12]))
print result

उत्पादन

[(0, 1), (1, 3), (2, 7),(3,12)]

2

यदि आपके पास कई सूचियाँ हैं, तो आप यह संयोजन enumerateऔर कर सकते हैं zip:

list1 = [1, 2, 3, 4, 5]
list2 = [10, 20, 30, 40, 50]
list3 = [100, 200, 300, 400, 500]
for i, (l1, l2, l3) in enumerate(zip(list1, list2, list3)):
    print(i, l1, l2, l3)
आउटपुट:
0 1 10 100
1 2 20 200
2 3 30 300
3 4 40 400
4 5 50 500

ध्यान दें कि कोष्ठक के बाद की आवश्यकता है i। अन्यथा आपको त्रुटि मिलती है:ValueError: need more than 2 values to unpack

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.