2015-08-28 2 views
4
>>> itertools.izip('ABCD', 'xy') 
Traceback (most recent call last): 
    File "<pyshell#55>", line 1, in <module> 
    itertools.izip('ABCD', 'xy') 
AttributeError: 'module' object has no attribute 'izip' 
+2

Какую версию Python вы используете? В Python 3 встроенная функция 'zip' ведет себя как' itertools.izip' в Python 2. – Blckknght

+0

Blckknght прав. Если вы не знаете, как найти версию python, см. Здесь: http://stackoverflow.com/questions/9079036/detect-python-version-at-runtime –

+0

@Blckknght Привет, Blckknght, я использую версию 3.4.3. Вы можете видеть это также в верхней строке окна оболочки. У меня такая же проблема с string.maketrans (...). см: –

ответ

7

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

Вы также упомянули проблему с string.maketrans. Это еще одна функция, которая больше не находится в модуле в Python 3. Теперь это метод класса str: str.maketrans. Обратите внимание, однако, что его поведение немного отличается от string.maketrans в Python 2, поскольку метод translate в строках принимает разные аргументы (словарь вместо строки с 256 символами).

Похоже, вы можете следовать руководству, написанному для Python 2, но используя Python 3 для запуска своего кода. Это может ввести в заблуждение, поскольку произошли значительные изменения между основными версиями языка. Вы должны попытаться найти руководство, нацеленное на Python 3. Я не рекомендую использовать Python 2 для вашего кодирования, если вы действительно не должны следовать своему текущему руководству.

+0

Спасибо, что отвечаете. Фактически, я следил за видео в режиме онлайн на слайдерах, которые, должно быть, были записаны с использованием Python 2. –

Смежные вопросы