답변
텍스트가 반복되기 전에 되돌려집니다. 그것은 다른 어떤 방법도 될 수 없습니다. for
루프는 반복 할 텍스트가 필요합니다.
정말 게으르려면 색인을 사용해야합니다.
def myfunc(text):
for i in range(len(text) - 1, -1, -1):
yield text[i]
파이썬 2에서, range
대신에 xrange
를 사용합니다.
물론 기본적으로 기본 제공 함수 reversed()
을 다시 구현했습니다.
"다른 방법은있을 수 없으며 for 루프는 반복 할 텍스트가 필요합니다." 불행한 말씨? 여전히 for 루프를 사용하고 있습니다. – viraptor
@viraptor'text [:: - 1]'을 평가해야하고 그 결과로 만든 반복자입니다. 그렇기 때문에이 경우에는 "reversed text"를 생성해야합니다 ** ** 전에'for' 루프가 시작될 수있다. (물론'str .__ getitem__'이 반복자를 반환했다면 게으르다.) – donkopotamus
글쎄,'text [:: - 1]'*는 문자열 대신에 반복자를 반환 할 수있다. 방법; 그것은 분명히 아닙니다. – deceze
문자열 분리를 할 때와 완전히 똑같이 평가 될 것입니다 :'str [...]'는 새로운 문자열을 반환하고, 그 다음 반복합니다. – deceze