2012-03-01 17 views
37

que tienen que hacer en Python lo mismo que:índices de recuento utilizando "para" en Python

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

pero no sé cómo va a utilizar para en Python para obtener el índice de los elementos en una lista .

+0

¿Qué elementos? ¿Qué lista? – Sean

+0

No puse la lista. lo que necesito es simplemente obtener el índice de elementos en una lista. Normalmente usaría un FOR en C++ o Java para obtener esta información. En este caso, suponiendo que la lista es ["a", "b", "c"], necesito el índice de a, byc (0, 1 y 2). –

+3

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

Respuesta

58

Si tiene alguna lista dada, y desea iterar sobre sus artículos y índices, puede utilizar enumerate():

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

Si sólo necesita los índices, puede utilizar range():

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

es mejor usar xrange() en lugar de range() en este caso;) – n1r3

+0

i though 'range (len (my_list))' ¿debería evitarse? (para mí, haría 'enumerar' pero usar solo' index'). – neizod

+0

@ n1r3: Es mejor enseñar 'range()' antes de 'xrange()'. –

0

Esto?

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

Esto me funcionaría porque ya sé que tendré siempre 5 artículos. :) Pero en otros casos necesitaría obtener los índices de una cantidad desconocida de elementos. –

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

Si usted tiene una lista existente y desea bucle sobre ella y hacer un seguimiento de los índices que puede utilizar la función enumerate. Por ejemplo

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

En sirvieron a otras respuestas - muy a menudo, no tiene que recorrer a través del índice, pero puede simplemente usar una cada uno para la expresión personal:

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

En este caso, me devolverá los artículos, no sus índices. =/ –

+0

right - use enumerate() o para índice en rango (len (my_list)) luego – alex

16

sólo tiene que utilizar

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

para recorrer el conjunto de datos e imprimir cada valor.

Para grandes conjuntos de datos, desea utilizar xrange, que tiene una firma muy similar, pero funciona de manera más efectiva para conjuntos de datos más grandes. http://docs.python.org/library/functions.html#xrange

1

La manera más simple que yo elegiría;

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 
Cuestiones relacionadas