Ответ 1
В Python 3 встроенный zip
выполняет ту же работу, что и itertools.izip
в 2.X (возвращает итератор вместо списка). Реализация zip
почти полностью вставлена в копию из старого izip
, только с несколькими измененными именами и добавлена поддержка pickle.
Вот тест между zip
в Python 2 и 3 и izip
в 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))
Выход:
1.9288790226
1.2828938961
from timeit import timeit
print(timeit('list(zip(range(100), range(100)))', number=500000))
Выход:
1.7653984297066927
В этом случае, поскольку аргументы zip
должны поддерживать итерацию, вы не можете использовать 2 в качестве аргумента. Поэтому, если вы хотите записать 2 переменные в виде строки CSV, вы можете поместить их в кортеж или список:
writer.writerows((variable1,2))
Также из itertools
вы можете импортировать zip_longest
в качестве более гибкой функции, которую вы можете использовать на итераторах с другим размером.