2015-09-18 16 views
12

Sto cercando di importare il modulo izip in questo modo:izip non funziona in Python 3.x

from itertools import izip 

Tuttavia dopo recente passaggio da Python 2,7-3 - non sembra funzionare.

Sto cercando di scrivere in un file CSV:

writer.writerows(izip(variable1,2)) 

Ma non ho fortuna. Ancora incontrano un errore.

risposta

20

In Python 3 lo zip incorporato fa lo stesso lavoro di izip in 2.x (restituisce un generatore anziché un elenco) ma leggermente più veloce in quanto è una funzione incorporata.

Qui è un punto di riferimento tra zip in Python 2 e 3 e izip in Python 2:

Python 2.7:

In [5]: %timeit list(izip(range(100), range(100))) 
100000 loops, best of 3: 5.16 µs per loop 

In [6]: %timeit zip(range(100), range(100)) 
100000 loops, best of 3: 3.87 µs per loop 

Python 3:

In [2]: %timeit list(zip(range(100), range(100))) 
100000 loops, best of 3: 3.84 µs per loop 

In questo caso, poiché zip Gli argomenti devono supportare l'iterazione non è possibile utilizzare 2 come argomento. Quindi, se si vuole scrivere 2 variabile come una fila CSV li si può mettere in una tupla o una lista:

writer.writerows((variable1,2)) 

Anche da itertools è possibile importare zip_longest come una funzione più flessibile che si può utilizzare su iteratori con diversi dimensione.

0

Uno dei modi che mi ha aiutato è:

try: 
    from itertools import izip as zip 
except ImportError: # will be 3.x series 
    pass