파이썬의 itertools.cycle에 대한 문서는()와 같은 의사 코드 구현 제공 : 아래왜 파이썬의 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
를,이 상태 : "참고 툴킷이 멤버는 중요한 보조 기억 장치를 필요로 할 수있다 (의 길이에 따라 iterable). "
def loop(iterable):
it = iterable.__iter__()
while True:
try:
yield it.next()
except StopIteration:
it = iterable.__iter__()
yield it.next()
x = {1, 2, 3}
hard_limit = 6
for i in loop(x):
if hard_limit <= 0:
break
print i
hard_limit -= 1
인쇄 :
1
2
3
1
2
3
예, 내 구현을 실현 내가 이런 짓을 제외하고
나는 기본적으로 반복자의 복사본을 만들 필요로하지 않는,이 길을 가고 있었다 str의 경우에는 작동하지 않지만 그렇게 할 수는 있습니다. 왜 다른 복사본을 만드는 지에 대해 더 궁금합니다. 쓰레기 수거와 관련된 느낌이 들지만, 파이썬의이 분야에서 잘 공부하지는 못했습니다.
감사합니다.
@Martijn 구문 강조 표시를 어떻게 추가 했습니까? 나는 그것을하는 법을 이해할 수 없었다 ... – stantonk
나는하지 않았다; 나는'python' 태그를 추가하고 강조 표시가 자동으로 적용됩니다. 그러나 태그 강조 표시가없는 경우에도 어쨌든 정확하게 추측됩니다. –
아,하지만 python2.7 태그는 그렇지 않나요? 이상한 ... – stantonk