2015-09-18 3 views
12

Ich versuche, wie so das izip Modul zu importieren:izip funktioniert nicht in Python 3.x

from itertools import izip 

Doch nach kurzem über von Python 2,7-3 ändern - es ist nicht zu funktionieren scheint.

Ich versuche, in eine CSV-Datei zu schreiben:

writer.writerows(izip(variable1,2)) 

Aber ich habe kein Glück. Tritt immer noch ein Fehler auf.

Antwort

20

In Python 3 macht der eingebaute zip den gleichen Job wie izip in 2.x (gibt einen Generator statt einer Liste zurück), aber etwas schneller, da es eine eingebaute Funktion ist.

Hier ist ein Benchmark zwischen zip in Python 2 und 3 und 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 diesem Fall, da zip Die Argumente müssen die Iteration unterstützen. Sie können nicht 2 als Argument verwenden. Also, wenn Sie zwei Variable als CSV-Zeile schreiben möchten, können Sie sie in einem Tupel oder Liste gesetzt:

writer.writerows((variable1,2)) 

Auch von itertools Sie zip_longest als flexibler Funktion importieren können, die Sie auf Iteratoren mit unterschiedlichen verwenden können Größe.

0

Eine der Möglichkeiten, die mir geholfen ist:

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