Per i miei clienti, l'iterazione attraverso più contatori si sta trasformando in un'attività ricorrente.Python: contatori nidificati
Il modo più semplice sarebbe qualcosa di simile a questo:
cntr1 = range(0,2)
cntr2 = range(0,5)
cntr3 = range(0,7)
for li in cntr1:
for lj in cntr2:
for lk in cntr3:
print li, lj, lk
Il numero di contatori può essere ovunque da 3 a e quelli annidati per i loop iniziare a prendere fino immobiliare.
Esiste un modo Python per fare qualcosa di simile?
for li, lj, lk in mysteryfunc(cntr1, cntr2, cntr3):
print li, lj, lk
continuo a pensare che qualcosa nel itertools si adatterebbe questo disegno di legge, ma non sono abbastanza con itertools familiare per dare un senso delle opzioni. Esiste già una soluzione come itertools o devo eseguire il rollover?
Grazie, j
Eccellente. Grazie, Winston. –
Inoltre (nel caso in cui qualcuno con un problema leggermente diverso arriva qui): Supponiamo di avere un array 'cntr = [cntr1, cntr2, cntr3]'. Quindi chiamare 'itertools.product (cntr)' non funzionerà. (Stampa solo tutte le 1-tuple in cui il primo elemento è un elemento di 'cntr'; in pratica stampa' cntr'.) Invece, puoi fare itertools.product (* cntr) '. – ShreevatsaR