2012-03-01 20 views
37

yılında Python içinde yapmanız gereken aynı şekilde:Sayım endeksleri Python

for (i = 0; i < 5; i++) {cout << i;} 

ama listedeki elemanların endeksini hesaplamak için Python İÇİN nasıl kullanılacağını bilmiyorum . Bazı verilen liste var ve onun öğeleri ve üzerinde döngüler istiyorsanız

+0

Hangi öğeler? Ne listesi – Sean

+0

Listeyi ben koymadım. İhtiyacım olan şey, bir listedeki elemanların indeksini almaktır. Normalde bu bilgiyi almak için C++ veya Java'da bir FOR kullanın. Bu durumda, listenin ["a", "b", "c"] olduğunu varsayalım, a, b ve c (0, 1 ve 2) indeksine ihtiyacım var. –

+3

http://stackoverflow.com/questions/522563/accessing-the-index-in-python-for-loops adresinin kopyası – WolframH

cevap

58

, sen enumerate() kullanabilirsiniz: Yalnızca endekslerini gerekiyorsa, kullanabilirsiniz

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

range():

for i in range(len(my_list)): 
    print i 
+0

bu durumda range() yerine xrange() kullanmak daha iyidir;) – n1r3

+0

i aralığı (len (my_list)) 'kaçınılmalıdır? (Benim için, numaralandırırdım 'sadece' indeks 'kullanır). – neizod

+0

@ n1r3: xrange() 'dan önce range()' yi öğretmek daha iyidir. –

0

Bu?

for i in range(0,5): 
print(i) 
+0

Bu benim için işe yarar çünkü zaten her zaman 5 ürünüm olacağını biliyorum. :) Ama diğer durumlarda bilinmeyen sayıda elemanın indekslerini almam gerekiyor. –

8

kullanım enumerate:

>>> l = ['a', 'b', 'c', 'd'] 
>>> for index, val in enumerate(l): 
... print "%d: %s" % (index, val) 
... 
0: a 
1: b 
2: c 
3: d 
9

Eğer mevcut bir liste var ve bunun üstesinden döngü istiyorum ve enumerate işlevini kullanabilirsiniz endeksleri takip edin. Diğer cevaplar dışında ilave

l = ["apple", "pear", "banana"] 
for i, fruit in enumerate(l): 
    print "index", i, "is", fruit 
0

Örneğin - Çok sık, sen dizini kullanarak yineleme gerekmez ama sadece bir for-her ifadeyi kullanabilirsiniz:

my_list = ['a', 'b', 'c'] 
for item in my_list: 
    print item 
+0

Bu durumda, bana dizinleri değil, öğeleri döndürecektir. =/ –

+0

sağ - enumerate() veya menzil için (len (my_list)) – alex

1

Yapacağım en basit yol;

i = -1 
for step in my_list: 
    i += 1 
    print(i) 

#OR - WE CAN CHANGE THE ORDER OF EXECUTION - SEEMS MORE REASONABLE 

i = 0 
for step in my_list: 
    print(i) #DO SOMETHING THEN INCREASE "i" 
    i += 1