2012-03-01 25 views
37

muszę zrobić w Pythonie jak poniżej:Hrabia indeksów przy użyciu „za” w Pythonie

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

ale nie wiem jak używać FOR w Pythonie, aby uzyskać indeks elementów na liście .

+0

Jakie elementy? Jaką listę? – Sean

+0

Nie umieściłem listy. potrzebuję tylko uzyskać indeks elementów na liście. Zwykle używam FOR w C++ lub Java, aby uzyskać te informacje. W tym przypadku, zakładając, że lista to ["a", "b", "c"], potrzebuję indeksu a, b i c (0, 1 i 2). –

+3

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

Odpowiedz

58

Jeśli masz jakieś daną listę, a chcesz iteracyjne nad jego elementów i indeksy, można użyć enumerate():

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

Jeśli potrzebujesz tylko indeksy, można użyć range():

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

lepiej używać xrange() zamiast range() w tym przypadku;) – n1r3

+0

i czy powinno się unikać 'range (len (my_list))? (dla mnie, zrobiłbym 'wyliczyć' ale użyję tylko' indeksu'). – neizod

+0

@ n1r3: Lepiej uczyć 'range()' przed 'xrange()'. –

0

To?

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

To będzie działać dla mnie, ponieważ wiem już, że zawsze będę mieć 5 przedmiotów. :) Ale w innych przypadkach musiałbym uzyskać indeksy o nieznanej liczbie elementów. –

8

użycie 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

Jeśli masz już listę i chcesz pętli nad nim i śledzić indeksów można użyć funkcji enumerate. Na przykład

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

w additon do innych odpowiedzi - bardzo często, nie trzeba iteracyjne za pomocą indeksu, ale można po prostu użyć for-each wyrażenie:

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

W takim przypadku zwrócą mi pozycje, a nie indeksy. =/ –

+0

right - użyj wyliczenia() lub indeksu w zakresie (len (my_list)), a następnie – alex

1

Najprostszy sposób, w jaki bym chodził;

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 
Powiązane problemy