2012-03-01 6 views
37

ho bisogno di fare in Python lo stesso:indici Count utilizzando "per" in Python

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

ma non so come usare FOR in Python per ottenere l'indice degli elementi in una lista .

+0

Quali elementi? Quale lista? – Sean

+0

Non ho inserito la lista. ciò di cui ho bisogno è semplicemente ottenere l'indice degli elementi in una lista. Normalmente userei un FOR in C++ o Java per ottenere queste informazioni. In questo caso, supponendo che la lista sia ["a", "b", "c"], ho bisogno dell'indice di a, b e c (0, 1 e 2). –

+3

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

risposta

58

Se si dispone di una certa data lista, e si desidera iterare i suoi elementi e indici, è possibile utilizzare enumerate():

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

Se avete solo bisogno gli indici, è possibile utilizzare range():

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

meglio usare xrange() invece di range() in questo caso;) – n1r3

+0

anche se 'range (len (my_list))' dovrebbe essere evitato? (per me, vorrei fare "enumerare" ma usare solo "index"). – neizod

+0

@ n1r3: meglio insegnare 'range()' prima di 'xrange()'. –

0

Questo?

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

Questo funzionerebbe per me perché so già che avrò sempre 5 elementi. :) Ma in altri casi avrei bisogno di ottenere gli indici di un numero sconosciuto di elementi. –

8

uso 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

Se si dispone di un elenco esistente e si desidera ciclo su di esso e tenere traccia degli indici è possibile utilizzare la funzione enumerate. Per esempio

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

In additon ad altre risposte - molto spesso, non c'è bisogno di iterare utilizzando l'indice, ma si può semplicemente utilizzare un per-ogni espressione:

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

In questo caso restituirò gli articoli, non i suoi indici. =/ –

+0

right - usa enumerate() o per l'indice nell'intervallo (len (mia_elenco)) quindi – alex

1

Il modo più semplice per cui vorrei andare è;

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