2010-04-20 28 views
15

¿Es posible en Python ejecutar varios contadores en un solo bucle for como en C/C++?Varios contadores en un único bucle for: Python

Me gustaría algo como - for i,j in x,range(0,len(x)): Sé que Python interpreta esto de manera diferente y por qué, pero ¿cómo podría ejecutar dos contadores de bucle al mismo tiempo en un solo bucle?

+2

Aparte (ya que es probable que no quiere usarlo en este caso): 'rango (0, len (x)) == gama (len (x))' ' –

Respuesta

13

Es posible que desee utilizar zip

for i,j in zip(x,range(0,len(x))): 

ejemplo,

>>> x = [1, 2, 3] 
>>> y = [4, 5, 6] 
>>> zipped = zip(x, y) 
>>> print zipped 
[(1, 4), (2, 5), (3, 6)] 
>>> for a,b in zipped: 
...  print a,b 
... 
1 4 
2 5 
3 6 
>>> 

Nota: La respuesta correcta a esta pregunta es enumerate como otros mencionados, zip es opción general a tener varios elementos en un solo bucle

+0

zip' es bueno, pero en este caso particular, 'enumerar' es la forma habitual de hacer lo que el cartel original quiere. – EOL

27

Quiere zip en general, whi ch combina dos iteradores, como dice S.Mark. Pero en este caso enumerate hace exactamente lo que necesita, lo que significa que no tiene que utilizar directamente range:

for j, i in enumerate(x): 

Tenga en cuenta que esto da el índice de x en primer lugar, por lo que he revertido j, i.