나는 itertools.cycle(iterable)의 경고에 대한 궁금 :파이썬에서 itertools.cycle은 왜 추가 메모리가 필요합니까?
엔트리는 경고를 포함이 반복자는 반복 가능한 에서 요소를 반환 각각의 사본을 저장합니다. 반복 가능이 모두 소모되면 은 저장된 사본에서 요소를 리턴합니다. 무기한 반복합니다.
등가로 :
def cycle(iterable): # cycle('ABCD') --> A B C D A B C D A B C D ... saved = [] for element in iterable: yield element saved.append(element) while saved: for element in saved: yield element
"참고 툴킷이 부재합니다 (반복 가능 길이에 따라) 상당한 보조 기억 장치를 필요로 할 수있다."
당신과 함께 추가 스토리지 요구 사항 (일부 복잡성을) 피할 수 없습니다 :
def cycle(iterable):
while True:
for i in iterable:
yield i
을 무엇 saved
에 사용되는 항목을 저장의 장점?
그건 그냥 관련이있는 것이 아니라 완전히 똑같은 것입니다. – delnan
예 ... 꽤 많이 ... – korylprince
와우, itertools주기에 대한 15 개의 질문을 읽고, 전혀 보지 못했습니다. 중복해서 죄송합니다! – Brownbat