I am trying to import the izip module like so:
from itertools import izip
However after recently changing over from Python 2.7 to 3 – it doesn’t seem to work.
I am trying to write to a csv file:
writer.writerows(izip(variable1,2))
But I have no luck. Still encounter an error.
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
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:
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))
Output:
1.9288790226 1.2828938961
from timeit import timeit
print(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.
Method 2
One of the ways which helped me is:
try:
from itertools import izip as zip
except ImportError: # will be 3.x series
pass
Method 3
Use zip instead of izip directly in python 3, no need to import anything.
For further visit here.
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0