importing izip from itertools module gives NameError in Python 3.x importing izip from itertools module gives NameError in Python 3.x python python

importing izip from itertools module gives NameError in Python 3.x


In Python 3 the built-in zip does the same job as itertools.izip in 2.X(returns an iterator instead of a list). The zip implementation is almost completely copy-pasted from the old izip, just with a few names changed and pickle support added.

Here is a benchmark between zip in Python 2 and 3 and izip in Python 2:

Python 2.7:

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

Output:

1.92887902261.2828938961

Python 3:

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

Output:

1.7653984297066927

In this case since zip's arguments must support iteration you can not use 2 as its argument. So if you want to write 2 variable as a CSV row you can put them in a tuple or list:

writer.writerows((variable1,2))

Also from itertools you can import zip_longest as a more flexible function which you can use it on iterators with different size.


One of the ways which helped me is:

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


Use zip instead of izip directly in python 3, no need to import anything.

For further visit here.