'में' छोरों के लिए सूचकांक तक पहुँच?


3600

मैं forनिम्नलिखित जैसे लूप में सूचकांक तक कैसे पहुंच सकता हूं ?

ints = [8, 23, 45, 12, 78]
for i in ints:
    print('item #{} = {}'.format(???, i))

मैं यह आउटपुट प्राप्त करना चाहता हूं:

item #1 = 8
item #2 = 23
item #3 = 45
item #4 = 12
item #5 = 78

जब मैं एक forलूप का उपयोग करके इसके माध्यम से लूप करता हूं, तो मैं इस मामले में 1 से 5 तक लूप इंडेक्स का उपयोग कैसे करूं?


42
ध्यान दें कि अजगर में अनुक्रमित 0 से शुरू होते हैं, इसलिए आपकी उदाहरण सूची के लिए अनुक्रमित 0 से 4 नहीं 1 से 5 हैं
प्लगऑफ

जवाबों:


6106

एक अतिरिक्त राज्य चर का उपयोग करना, जैसे कि एक सूचकांक चर (जिसे आप सामान्य रूप से सी या पीएचपी जैसी भाषाओं में उपयोग करेंगे), गैर-पायथोनिक माना जाता है।

बेहतर विकल्प बिल्ट-इन फ़ंक्शन का उपयोग करना है enumerate(), जो पायथन 2 और 3 दोनों में उपलब्ध है:

for idx, val in enumerate(ints):
    print(idx, val)

अधिक के लिए पीईपी 279 देखें ।


61
जैसा कि आरोन नीचे बताते हैं, प्रारंभ = 1 का उपयोग करें यदि आप 0-4 के बजाय 1-5 प्राप्त करना चाहते हैं।
clozach

2
क्या enumerateएक और ओवरहेड को उकसाना नहीं है?
TheRealChx101

@ मेरे परीक्षण (पायथन 3.6.3) के अनुसार TheRealChx101 अंतर नगण्य है और कभी-कभी इसके पक्ष में भी होता है enumerate
बोलोटमęटेक

803

लूप का उपयोग करते हुए, मैं इस मामले में 1 से 5 तक लूप इंडेक्स का उपयोग कैसे करूं?

enumerateतत्व के साथ अनुक्रमणिका प्राप्त करने के लिए उपयोग करें जैसे कि आप इसे पुन: लिखते हैं:

for index, item in enumerate(items):
    print(index, item)

और ध्यान दें कि पायथन के सूचकांक शून्य से शुरू होते हैं, इसलिए आपको उपरोक्त के साथ 0 से 4 मिलेगा। यदि आप गिनती, 1 से 5 चाहते हैं, तो यह करें:

for count, item in enumerate(items, start=1):
    print(count, item)

Unidiomatic नियंत्रण प्रवाह

आप जो पूछ रहे हैं, वह निम्नलिखित के बराबर पायथोनिक है, जो कि एल्गोरिथ्म है जो निचले स्तर की भाषाओं के अधिकांश प्रोग्रामर उपयोग करेंगे:

index = 0            # Python's indexing starts at zero
for item in items:   # Python's for loops are a "for each" loop 
    print(index, item)
    index += 1

या ऐसी भाषाओं में जिनके लिए प्रत्येक लूप नहीं है:

index = 0
while index < len(items):
    print(index, items[index])
    index += 1

या कभी-कभी अधिक (लेकिन unidiomatically) पायथन में पाया जाता है:

for index in range(len(items)):
    print(index, items[index])

Enumerate फ़ंक्शन का उपयोग करें

पायथन का enumerateकार्य अनुक्रमों के लिए लेखांकन को छिपाकर दृश्य अव्यवस्था को कम करता है, और पुनरावृत्त को एक और पुनरावृत्त (एक enumerateवस्तु) में संलग्न करता है जो सूचकांक के दो-आइटम टपल और उस आइटम का उत्पादन करता है जो मूल लेयरेबल प्रदान करेगा। यह इस तरह दिखता है:

for index, item in enumerate(items, start=0):   # default is zero
    print(index, item)

यह कोड नमूना कोड के बीच के अंतर का बहुत अच्छी तरह से विहित उदाहरण है जो कि पायथन के मुहावरेदार और कोड नहीं है। मुहावरेदार कोड परिष्कृत (लेकिन जटिल नहीं है) पायथन, इस तरह से लिखा गया है कि इसका उपयोग करने का इरादा था। भाषा के डिजाइनरों द्वारा मुहावरेदार कोड की अपेक्षा की जाती है, जिसका अर्थ है कि आमतौर पर यह कोड न केवल अधिक पठनीय है, बल्कि अधिक कुशल भी है।

एक गिनती हो रही है

भले ही आपको जाते समय अनुक्रमित की आवश्यकता न हो, लेकिन आपको पुनरावृत्तियों (कभी-कभी वांछनीय) की एक गिनती की आवश्यकता होती है जिसे आप शुरू कर सकते हैं 1और अंतिम संख्या आपकी गिनती होगी।

for count, item in enumerate(items, start=1):   # default is zero
    print(item)

print('there were {0} items printed'.format(count))

जब आप 1 से 5 तक चाहते थे, तो गिनती अधिक प्रतीत होती है, जैसा कि आप इंडेक्स के विपरीत पूछना चाहते हैं।


इसे तोड़कर - एक कदम से कदम स्पष्टीकरण

इन उदाहरणों को तोड़ने के लिए, कहें कि हमारे पास उन वस्तुओं की एक सूची है जिन्हें हम एक सूचकांक के साथ जोड़ना चाहते हैं:

items = ['a', 'b', 'c', 'd', 'e']

अब हम एन्यूमरेट करने के लिए इस पुनरावृत्ति को पास करते हैं, एन्यूमरेट ऑब्जेक्ट बनाते हैं:

enumerate_object = enumerate(items) # the enumerate object

हम इस पुनरावृत्ति से पहले आइटम को खींच सकते हैं जो हमें nextफ़ंक्शन के साथ लूप में मिलेगा :

iteration = next(enumerate_object) # first iteration from enumerate
print(iteration)

और हम देखते हैं कि हमें 0सबसे पहला इंडेक्स मिला है, और 'a'पहला आइटम:

(0, 'a')

हम इस टू-टपल से तत्वों को निकालने के लिए " अनुक्रम अनपैकिंग " के रूप में संदर्भित का उपयोग कर सकते हैं :

index, item = iteration
#   0,  'a' = (0, 'a') # essentially this.

और जब हम निरीक्षण index, हम इसे पहले यह सूचकांक 0 को संदर्भित करता है, और लगता है item, पहला आइटम को संदर्भित करता है 'a'

>>> print(index)
0
>>> print(item)
a

निष्कर्ष

  • पायथन इंडेक्स शून्य पर शुरू होता है
  • जब आप उस पर पुनरावृति करते हैं, तो इन अनुक्रमणिकाओं को पुनरावृत्ति से प्राप्त करने के लिए, एन्यूमरेट फ़ंक्शन का उपयोग करें
  • मुहावरेदार तरीके से (टपल अनपैकिंग के साथ) एन्यूमरेट का उपयोग करना एक ऐसा कोड बनाता है जो अधिक पठनीय और रखरखाव योग्य है:

तो ऐसा करें:

for index, item in enumerate(items, start=0):   # Python indexes start at zero
    print(index, item)

1
"क्या हो रही गिनती " उदाहरण के काम जब itemsखाली है?
बरगी

मैं एक चर के रूप में Django विचारों के लिए एक चर के रूप में ajax का उपयोग कर डेटा भेज रहा हूँ मानों के साथ एक चर legData में [1406, 1409]। यदि मैं उपयोग करके कंसोल पर प्रिंट करता हूं print(legData), तो आउटपुट [1406,1409] है । हालाँकि, अगर मैं सूची के व्यक्तिगत मूल्यों को पार्स करने की कोशिश करता हूँ, तो for idx, xLeg in enumerate(legData): print(idx, xLeg)यह मुझे अलग-अलग पूर्णांक जैसे कि [, 1, 4, 0, 6, और इसी तरह के सूचकांकों 0, 1, 2, 3, 4 के खिलाफ आउटपुट देता है। आदि (हाँ, वर्ग कोष्ठक और अल्पविराम भी आउटपुट हैं जैसे कि वे स्वयं डेटा का हिस्सा थे )। यहाँ क्या गलत हो रहा है?
user12379095

@ user12379095 आपके पास संभवतः गलत प्रकार (एक स्ट्रिंग) में डेटा है और आपको इसे स्ट्रिंग की बजाय संख्याओं की वास्तविक सूची में बदलने की आवश्यकता है। यह विषय कुछ हद तक यहाँ है, कृपया अपनी टिप्पणी को हटा दें और मेरा झंडा हटा दें।
हारून हॉल

151

इसे छोड़कर 1अन्य से शुरू करना बहुत सरल है 0:

for index, item in enumerate(iterable, start=1):
   print index, item

ध्यान दें

महत्वपूर्ण संकेत, हालांकि यहां से थोड़ा भ्रामक indexहोगा tuple (idx, item)। जाना अच्छा है।


10
प्रश्न सूची सूचियों के बारे में था; चूंकि वे 0 से शुरू होते हैं इसलिए दूसरे नंबर से शुरू करने का कोई मतलब नहीं है क्योंकि इंडेक्स गलत होगा (हां, ओपी ने कहा कि यह सवाल में भी गलत है)। अन्यथा, चर के टपल है कि बुला index, itemबस indexबहुत भ्रामक है, जैसा कि आप का उल्लेख किया। बस उपयोग करें for index, item in enumerate(ints)
अंती हापाला

1
बेहतर यह दोनों अजगर संस्करण 2 और 3 पर काम करेंगे, के रूप में (इंडेक्स) कोष्टक जोड़े अंदर सूचकांक संलग्न करने के लिए है
hygull

1
@AnttiHaapala कारण, मुझे लगता है, यह है कि प्रश्न का अपेक्षित आउटपुट इंडेक्स 1 के बजाय 0 से शुरू होता है
pushkin

90
for i in range(len(ints)):
   print i, ints[i]

10
यह शायद xrangeपूर्व 3.0 के लिए होना चाहिए ।
बेन ब्लैंक

42
इसके बजाय एन्यूमरेट का उपयोग करें
saulspatz

3
उपरोक्त पायथन 2.3 के लिए, अधिक पायथोनिक के बाद से एन्यूमरेट बिल्ट-इन फ़ंक्शन का उपयोग करें।
जानुर्वास

गणना करना हमेशा बेहतर नहीं होता है - यह आवेदन की आवश्यकताओं पर निर्भर करता है। मेरी वर्तमान स्थिति में वस्तु की लंबाई के बीच के संबंध मेरे आवेदन के लिए सार्थक हैं। हालाँकि मैंने एन्यूमरेट का उपयोग करना शुरू कर दिया था, मैंने इस दृष्टिकोण पर स्विच किया कि तर्क को लिखने के लिए तर्क से बचने के लिए कि किस ऑब्जेक्ट को एन्यूमरेट करना है।
adg

1
@ मैं नहीं देखता कि कैसे बचना enumerateकिसी भी तर्क को बचाता है; आपको अभी भी चयन करना है कि किस वस्तु के साथ अनुक्रमण करना है i, नहीं?
चेंपर्स

47

जैसा कि पायथन में आदर्श है, ऐसा करने के कई तरीके हैं। सभी उदाहरणों में:lst = [1, 2, 3, 4, 5]

1. एन्यूमरेट का उपयोग करना ( सबसे मुहावरेदार माना जाता है )

for index, element in enumerate(lst):
    # do the things that need doing here

मेरी राय में यह सबसे सुरक्षित विकल्प भी है क्योंकि अनंत पुनरावृत्ति में जाने की संभावना समाप्त हो गई है। आइटम और उसके सूचकांक दोनों को चर में रखा गया है और आइटम तक पहुंचने के लिए कोई और कोड लिखने की आवश्यकता नहीं है।

2. अनुक्रमणिका को पकड़ने के लिए एक चर बनाना ( उपयोग करनाfor )

for index in range(len(lst)):   # or xrange
    # you will have to write extra code to get the element

3. अनुक्रमणिका को पकड़ने के लिए एक चर बनाना ( उपयोग करनाwhile )

index = 0
while index < len(lst):
    # you will have to write extra code to get the element
    index += 1  # escape infinite recursion

4. हमेशा एक और तरीका होता है

जैसा कि पहले बताया गया है, ऐसा करने के अन्य तरीके हैं जिन्हें यहाँ समझाया नहीं गया है और वे अन्य स्थितियों में भी लागू हो सकते हैं। जैसे केitertools.chain साथ उपयोग करना। यह नेस्टेड लूप्स को अन्य उदाहरणों से बेहतर तरीके से हैंडल करता है।


30

पुराने जमाने का तरीका:

for ix in range(len(ints)):
    print ints[ix]

सूची की समझ:

[ (ix, ints[ix]) for ix in range(len(ints))]

>>> ints
[1, 2, 3, 4, 5]
>>> for ix in range(len(ints)): print ints[ix]
... 
1
2
3
4
5
>>> [ (ix, ints[ix]) for ix in range(len(ints))]
[(0, 1), (1, 2), (2, 3), (3, 4), (4, 5)]
>>> lc = [ (ix, ints[ix]) for ix in range(len(ints))]
>>> for tup in lc:
...     print tup
... 
(0, 1)
(1, 2)
(2, 3)
(3, 4)
(4, 5)
>>> 

3
यह गलत नहीं है और C / C ++ और अन्य में उपयोग किया जाता है। इसे गैर-पायथोनिक माना जाता है, लेकिन इसका उपयोग अजगर में भी किया जा सकता है। सरल समाधानों की तरह जो इसे स्रोत तक तोड़ते हैं: +
वेलोर नरम

कुछ अजगर चरमपंथी कहेंगे, ऐसा मत करो। लेकिन मैंने इसे केवल यह संकेत देने के लिए कहा कि एक से अधिक संभव तरीके हैं
वेलोर नारम

21

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

कृपया नीचे दिए गए कोड नमूनों में विभिन्न दृष्टिकोण देखें जिनका उपयोग सूची और एक्सेस इंडेक्स वैल्यू और उनके प्रदर्शन मैट्रिक्स (जो मुझे लगता है कि आपके लिए उपयोगी होगा) पर पुनरावृति करने के लिए किया जा सकता है :

from timeit import timeit

# Using range
def range_loop(iterable):
    for i in range(len(iterable)):
        1 + iterable[i]

# Using xrange
def xrange_loop(iterable):
    for i in xrange(len(iterable)):
        1 + iterable[i]

# Using enumerate
def enumerate_loop(iterable):
    for i, val in enumerate(iterable):
        1 + val

# Manual indexing
def manual_indexing_loop(iterable):
    index = 0
    for item in iterable:
        1 + item
        index += 1

नीचे प्रत्येक विधि के लिए प्रदर्शन मीट्रिक देखें:

from timeit import timeit

def measure(l, number=10000):
print "Measure speed for list with %d items" % len(l)
print "xrange: ", timeit(lambda :xrange_loop(l), number=number)
print "range: ", timeit(lambda :range_loop(l), number=number)
print "enumerate: ", timeit(lambda :enumerate_loop(l), number=number)
print "manual_indexing: ", timeit(lambda :manual_indexing_loop(l), number=number)

measure(range(1000))
# Measure speed for list with 1000 items
# xrange:  0.758321046829
# range:  0.701184988022
# enumerate:  0.724966049194
# manual_indexing:  0.894635915756

measure(range(10000))
# Measure speed for list with 100000 items
# xrange:  81.4756360054
# range:  75.0172479153
# enumerate:  74.687623024
# manual_indexing:  91.6308541298

measure(range(10000000), number=100)
# Measure speed for list with 10000000 items
# xrange:  82.267786026
# range:  84.0493988991
# enumerate:  78.0344707966
# manual_indexing:  95.0491430759

नतीजतन, rangeविधि का उपयोग 1000 वस्तुओं के साथ सूचीबद्ध करने के लिए सबसे तेज़ एक है। आकार के साथ सूची के लिए> 10 000 आइटम enumerateविजेता है।

नीचे कुछ उपयोगी लिंक जोड़ना:


5
"पठनीयता मायने रखती है" छोटी <1000 रेंज में गति अंतर नगण्य है। यह पहले से छोटे समय के मीट्रिक पर 3% धीमा है।

पायथन 3 के उत्तर को अपडेट करने के बारे में कैसे?
जार्ज

14

सबसे पहले, अनुक्रमणिका 0 से 4 तक होगी। प्रोग्रामिंग भाषाओं की गिनती 0 से शुरू होती है; यह मत भूलो या आप सीमा अपवाद से बाहर एक सूचकांक में आ जाएगा। आपको लूप की आवश्यकता है, एक चर गिनती 0 से 4 तक की तरह है:

for x in range(0, 5):

ध्यान रखें कि मैंने 0 से 5 लिखा है क्योंकि लूप अधिकतम से पहले एक नंबर को रोकता है। :)

एक सूचकांक उपयोग के मूल्य प्राप्त करने के लिए

list[index]

13

जब आप forलूप में इंडेक्स एक्सेस कर रहे हों तो यहां आपको क्या मिलेगा :

for i in enumerate(items): print(i)

items = [8, 23, 45, 12, 78]

for i in enumerate(items):
    print("index/value", i)

परिणाम:

# index/value (0, 8)
# index/value (1, 23)
# index/value (2, 45)
# index/value (3, 12)
# index/value (4, 78)

for i, val in enumerate(items): print(i, val)

items = [8, 23, 45, 12, 78]

for i, val in enumerate(items):
    print("index", i, "for value", val)

परिणाम:

# index 0 for value 8
# index 1 for value 23
# index 2 for value 45
# index 3 for value 12
# index 4 for value 78

for i, val in enumerate(items): print(i)

items = [8, 23, 45, 12, 78]

for i, val in enumerate(items):
    print("index", i)

परिणाम:

# index 0
# index 1
# index 2
# index 3
# index 4

12

इस चर्चा के अनुसार: http://bytes.com/topic/python/answers/464012-objects-list.gov.inex

लूप काउंटर पुनरावृत्ति

सूचकांकों पर लूपिंग के लिए वर्तमान मुहावरा निर्मित rangeकार्य का उपयोग करता है:

for i in range(len(sequence)):
    # work with index i

दोनों तत्वों और सूचकांकों पर लूपिंग पुरानी मुहावरे द्वारा या नए zipअंतर्निहित फ़ंक्शन का उपयोग करके प्राप्त किया जा सकता है :

for i in range(len(sequence)):
    e = sequence[i]
    # work with index i and element e

या

for i, e in zip(range(len(sequence)), sequence):
    # work with index i and element e

http://www.python.org/dev/peps/pep-0212/ के माध्यम से


22
यह जनरेटर के माध्यम से पुनरावृत्ति के लिए काम नहीं करेगा। बस एन्युमरेट () का उपयोग करें।
ताडेक

आजकल, वर्तमान मुहावरा घनीभूत है, रेंज कॉल नहीं।
टैंकरस्मैश

और यह पुराने उत्तर के समान है: stackoverflow.com/a/522576/6451573
जीन-फ्रांकोइस फेब्रे

11

आप इसे इस कोड के साथ कर सकते हैं:

ints = [8, 23, 45, 12, 78]
index = 0

for value in (ints):
    index +=1
    print index, value

यदि आपको लूप के अंत में इंडेक्स मान को रीसेट करने की आवश्यकता है तो इस कोड का उपयोग करें:

ints = [8, 23, 45, 12, 78]
index = 0

for value in (ints):
    index +=1
    print index, value
    if index >= len(ints)-1:
        index = 0

10

इस समस्या के लिए सबसे अच्छा समाधान इस्तेमाल होता है की गणना में-निर्माण अजगर कार्य करते हैं।
एन्यूमरेट रिटर्न टुपल
पहला मूल्य इंडेक्स है
दूसरा मूल्य उस इंडेक्स पर सरणी का तत्व है

In [1]: ints = [8, 23, 45, 12, 78]

In [2]: for idx, val in enumerate(ints):
   ...:         print(idx, val)
   ...:     
(0, 8)
(1, 23)
(2, 45)
(3, 12)
(4, 78)

9

अपने प्रश्न में, आप लिखते हैं "मैं इस मामले में 1 से 5 तक लूप इंडेक्स का उपयोग कैसे करूं?"

हालाँकि, किसी सूची का सूचकांक शून्य से चलता है। तो, फिर हमें यह जानना होगा कि क्या आप वास्तव में चाहते हैं कि सूची में प्रत्येक आइटम के लिए सूचकांक और आइटम है, या क्या आप वास्तव में 1 से शुरू होने वाले नंबर चाहते हैं। सौभाग्य से, पायथन में, दोनों में से या दोनों को करना आसान है।

सबसे पहले, स्पष्ट करने के लिए, enumerateफ़ंक्शन iteratively सूची में प्रत्येक आइटम के लिए अनुक्रमणिका और संबंधित आइटम देता है।

alist = [1, 2, 3, 4, 5]

for n, a in enumerate(alist):
    print("%d %d" % (n, a))

इसके बाद के संस्करण के लिए आउटपुट है,

0 1
1 2
2 3
3 4
4 5

ध्यान दें कि इंडेक्स 0. से चलता है। पायथन और सी सहित आधुनिक प्रोग्रामिंग भाषाओं में इस तरह की इंडेक्सिंग आम है।

यदि आप चाहते हैं कि आपका लूप सूची के एक हिस्से को फैलाए, तो आप सूची के एक हिस्से के लिए मानक पायथन सिंटैक्स का उपयोग कर सकते हैं। उदाहरण के लिए, एक सूची में दूसरे आइटम से लूप तक लेकिन अंतिम आइटम को शामिल नहीं करने के लिए, आप उपयोग कर सकते हैं

for n, a in enumerate(alist[1:-1]):
    print("%d %d" % (n, a))

ध्यान दें कि एक बार फिर, आउटपुट इंडेक्स 0 से चलता है,

0 2
1 3
2 4

यह हमें start=nस्विच के लिए लाता है enumerate()। यह केवल इंडेक्स को बंद कर देता है, आप केवल लूप के अंदर इंडेक्स में एक संख्या जोड़ सकते हैं।

for n, a in enumerate(alist, start=1):
    print("%d %d" % (n, a))

जिसके लिए आउटपुट है

1 1
2 2
3 3
4 4
5 5

9

अगर मैं nums = [1, 2, 3, 4, 5]यह करना होता तो मैं करता

for i, num in enumerate(nums, start=1):
    print(i, num)

या लंबाई के रूप में मिलता है l = len(nums)

for i in range(l):
    print(i+1, nums[i])

7

यदि सूची में कोई डुप्लिकेट मान नहीं है:

for i in ints:
    indx = ints.index(i)
    print(i, indx)

1
ध्यान दें कि पहले विकल्प का उपयोग नहीं किया जाना चाहिए, क्योंकि यह केवल तभी सही ढंग से काम करता है जब अनुक्रम में प्रत्येक आइटम अद्वितीय होता है।
स्टैम काल

2
पहला विकल्प हे (n²), एक भयानक विचार। यदि आपकी सूची 1000 तत्वों की लंबी है, तो इसका उपयोग करने की तुलना में सचमुच 1000 गुना लंबा समय लगेगा enumerate। आपको यह उत्तर हटा देना चाहिए।
बोरिस

5

आप यह भी आज़मा सकते हैं:

data = ['itemA.ABC', 'itemB.defg', 'itemC.drug', 'itemD.ashok']
x = []
for (i, item) in enumerate(data):
      a = (i, str(item).split('.'))
      x.append(a)
for index, value in x:
     print(index, value)

आउटपुट है

0 ['itemA', 'ABC']
1 ['itemB', 'defg']
2 ['itemC', 'drug']
3 ['itemD', 'ashok']

3

आप indexविधि का उपयोग कर सकते हैं

ints = [8, 23, 45, 12, 78]
inds = [ints.index(i) for i in ints]

EDIT ने इस टिप्पणी पर प्रकाश डाला कि यह विधि काम नहीं करती है यदि इसमें डुप्लिकेट हैं ints, तो नीचे दी गई विधि में किसी भी मान के लिए काम करना चाहिए ints:

ints = [8, 8, 8, 23, 45, 12, 78]
inds = [tup[0] for tup in enumerate(ints)]

या वैकल्पिक रूप से

ints = [8, 8, 8, 23, 45, 12, 78]
inds = [tup for tup in enumerate(ints)]

यदि आप सूची और मूल्य दोनों intsको टुपल्स की सूची के रूप में प्राप्त करना चाहते हैं ।

यह enumerateइस प्रश्न के चयनित उत्तर में विधि का उपयोग करता है , लेकिन सूची की समझ के साथ, इसे कम कोड के साथ तेजी से बनाता है।


2

जबकि लूप का उपयोग करते हुए सरल उत्तर:

arr = [8, 23, 45, 12, 78]
i = 0
while i<len(arr):
    print("Item ",i+1," = ",arr[i])
    i +=1

आउटपुट:

यहां छवि विवरण दर्ज करें


1

एक forलूप का उपयोग करके सूची समझ में (इंडेक्स, वैल्यू) का टपल प्रिंट करने के लिए :

ints = [8, 23, 45, 12, 78]
print [(i,ints[i]) for i in range(len(ints))]

आउटपुट:

[(0, 8), (1, 23), (2, 45), (3, 12), (4, 78)]

1

यह उद्देश्य को पर्याप्त रूप से पूरा करता है:

list1 = [10, 'sumit', 43.21, 'kumar', '43', 'test', 3]
for x in list1:
    print('index:', list1.index(x), 'value:', x)

4
के रूप में इस सूची में अगर वहाँ दोहराया जाता तत्वों नीचे टूट जाएगा index()की पहली आवृत्ति के लिए खोज करेंगे x, उल्लेख ओ (नहीं n ^ 2 ) समय प्रत्येक तत्व को देखने के लिए की आवश्यकता है।
पीटर ज़ोल्डन

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