Izip no funciona en Python 3.x

Estoy tratando de importar el módulo izip así:

from itertools import izip 

Sin embargo, después de cambiar recientemente de Python 2.7 a 3, no parece funcionar.

Estoy tratando de escribir en un archivo csv:

 writer.writerows(izip(variable1,2)) 

Pero no tengo suerte. Todavía encuentro un error.

En Python 3, el zip incorporado hace el mismo trabajo que itertools.izip en 2.X (devuelve un iterador en lugar de una lista). La implementación de zip está casi completamente copiada y pegada desde el antiguo izip , solo con unos pocos nombres cambiados y se ha agregado el soporte de pickle.

Aquí hay un punto de referencia entre zip en Python 2 y 3 e izip en Python 2:

Python 2.7 :

 from timeit import timeit print(timeit('list(izip(xrange(100), xrange(100)))', 'from itertools import izip', number=500000)) print(timeit('zip(xrange(100), xrange(100))', number=500000)) 

Salida:

 1.9288790226 1.2828938961 

Python 3 :

 from timeit import timeit print(timeit('list(zip(range(100), range(100)))', number=500000)) 

Salida:

 1.7653984297066927 

En este caso, dado que los argumentos de zip deben admitir la iteración, no puede usar 2 como argumento. Entonces, si desea escribir 2 variables como una fila CSV, puede ponerlas en una tupla o lista:

 writer.writerows((variable1,2)) 

También desde itertools puedes importar zip_longest como una función más flexible que puedes usar en iteradores de diferentes tamaños.

Una de las formas que me ayudó fue:

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

Use zip lugar de izip directamente en python 3, sin necesidad de importar nada.

Para más visita aquí .