예, itertools.count
은 카운트를 중단하지 않도록 설계되었습니다. 따라서 iterator을 반환하며 한 번에 모든 항목을 처리하지 않고 필요에 따라 항목을 생성합니다.
그러나, 코드의이 부분 :
[y for y in itertools.count()]
효과적으로 단일 목록에
itertools.count
에 의해 생성 된 숫자의 무한한 양을 배치 파이썬을 알려줍니다. 따라서 이 발생합니다.이 작업은 즉시 사용 가능한 모든 메모리를 사용하기 때문입니다.
당신은 단순히 목록 이해 1 제거하여 문제를 해결할 수 :이 변경으로
>>> import itertools
>>> my_list = ['a', 'b', 'c', 'd', 'e']
>>> for i in itertools.izip(my_list, itertools.count()):
... print i
...
('a', 0)
('b', 1)
('c', 2)
('d', 3)
('e', 4)
>>>
을 itertools.izip
지금만큼만를 생성합니다 itertools.count()
에 의해 반환 된 반복자, 반복됩니다 필요한 숫자. 이 불필요하기 때문에
1
는 너무 다른 지능형리스트를 제거 :이 목록이기 때문에
my_list
이미 반복 가능한 것입니다.