此问题已在此处有答案:
generator keeps returning the same value(2个答案)
6年前关闭。
当我使用以下命令时:
s = 'hello'
for i in range(0,len(s)):
print next(iter(s))
代码只打印h
五次。但当:
s = 'hello'
s_iterable = iter(s)
for i in range(0,len(s)):
print next(s_iterable)
hello
中的所有字母都将打印出来。
如果在这两种情况下iter(s)
和s_iterable
都是迭代器对象,为什么它们会给予不同的结果?
1条答案
按热度按时间tgabmvqs1#
在第一个例子中,你在循环中反复调用
iter
。当你调用iter(s)
时,它为字符串创建了一个新的迭代器,这个新的迭代器从头开始。一遍又一遍地从头开始是没有意义的。这就是为什么你只能打印出h
。