programing tip

itertools 모듈에서 izip을 가져 오면 Python 3.x에서 NameError가 발생합니다.

itbloger 2020. 12. 25. 09:03
반응형

itertools 모듈에서 izip을 가져 오면 Python 3.x에서 NameError가 발생합니다.


다음과 같이 izip 모듈을 가져 오려고합니다.

from itertools import izip

그러나 최근에 Python 2.7에서 3으로 변경 한 후 작동하지 않는 것 같습니다.

csv 파일에 쓰려고합니다.

writer.writerows(izip(variable1,2))

그러나 나는 운이 없다. 여전히 오류가 발생했습니다.


Python 3에서 내장 기능은 2.X에서 zip와 동일한 작업을 수행합니다 itertools.izip(목록 대신 반복자를 반환합니다). zip구현은 거의 완전히부터 붙여 복사됩니다 오래된izip 몇 가지 이름이 변경 및 피클 지원이 추가 된.

다음은 zipPython 2와 3과 Python 2 사이의 벤치 마크입니다 izip.

Python 2.7 :

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

파이썬 3 :

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수 있습니다.


나를 도운 방법 중 하나는 다음과 같습니다.

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

파이썬 3에서 직접 사용하는 zip대신 izip아무것도 가져올 필요가 없습니다.

여기 를 더 방문 하십시오 .

참조 URL : https://stackoverflow.com/questions/32659552/importing-izip-from-itertools-module-gives-nameerror-in-python-3-x

반응형