2015-09-18 1 views
12

Я пытаюсь импортировать модуль izip так:izip не работает в Python 3.x

from itertools import izip 

Однако после того, как в последнее время перехода от Python 2.7 до 3 - это не похоже на работу.

Я пытаюсь записать в файл CSV:

writer.writerows(izip(variable1,2)) 

Но я не везёт. Все еще встречаются ошибки.

ответ

20

В Python 3 встроенный zip выполняет ту же работу, что и izip в 2.x (возвращает генератор вместо списка), но немного быстрее, поскольку это встроенная функция.

Здесь эталоном между zip в Python 2 и 3 и izip в 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 

В этом случае, так как zip аргументы аргумента должны поддерживать итерацию, вы не можете использовать 2 в качестве аргумента. Так что если вы хотите, чтобы написать 2 переменную в виде строки CSV вы можете поместить их в кортеж или список:

writer.writerows((variable1,2)) 

Кроме того, из itertools вы можете импортировать zip_longest как более гибкой функции, которую вы можете использовать его на итераторы с различными размер.

0

Один из способов, которые помогли мне это:

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