in Python 2 non si conciliano "funzioni di gamma"; questi sono solo elenchi. Il tuo esempio funziona bene. Ma variare crea sempre un elenco completo in memoria, quindi un modo migliore se necessaria solo nel ciclo for potrebbe essere quella di utilizzare un generatore di espressione e xrange:
range_with_holes = (j for j in xrange(1, 31) if j != 6)
for i in range_with_holes:
....
Nel generatore di espressione del se una parte può contenere una logica complessa su quali numeri saltare.
Un altro modo di combinare iterables è quello di utilizzare il itertools.chain
:
range_with_holes = itertools.chain(xrange(1, 6), xrange(7, 31))
O semplicemente saltare l'indice indesiderato
for i in range(1, 31):
if i == 6:
continue
...
fonte
2013-08-19 15:50:52
Cosa avete pubblicato opere. Cosa stai chiedendo esattamente? C'è un modo per farlo 'meglio'? –
Quanto sopra funziona in python2, ma non in python3 –