当我使用以下内容时:
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
都是迭代器对象,为什么它们会给我不同的结果呢?
答案 0 :(得分:2)
在第一个中,您在循环中反复调用iter
。当你调用iter(s)
时,它为字符串创建一个新的迭代器,并且新的迭代器从头开始。从一开始就一次又一次地开始是没有意义的。这就是为什么你只打印h
的原因。