loop index for python loops for-loop foreach idioms

index - python if



Pitón anidado bucle Idiom (4)

A menudo me encuentro haciendo esto:

for x in range(x_size): for y in range(y_size): for z in range(z_size): pass # do something here

¿Hay alguna forma más concisa de hacer esto en Python? Estoy pensando en algo parecido a

for x, z, y in ... ? :



Puede usar itertools.product :

>>> for x,y,z in itertools.product(range(2), range(2), range(3)): ... print x,y,z ... 0 0 0 0 0 1 0 0 2 0 1 0 0 1 1 0 1 2 1 0 0 1 0 1 1 0 2 1 1 0 1 1 1 1 1 2


Si ya tienes numpy como dependencia, numpy.ndindex hará el truco ...

>>> for x,y,z in np.ndindex(2,2,2): ... print x,y,z ... 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1


Use itertools.product :

import itertools for x, y, z in itertools.product(range(x_size), range(y_size), range(z_size)): pass # do something here

De los documentos:

Producto cartesiano de los iterables de entrada.

Equivalente a los for-loops anidados en una expresión de generador.
...