在 next 函数中使用 iter 函数

Using iter function inside next function

当我使用以下内容时:

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 都是迭代器对象,为什么它们给我不同的结果?

在第一个中,您在循环中重复调用 iter。当您调用 iter(s) 时,它会为字符串创建一个新迭代器,并且该新迭代器从头开始。一次又一次从头开始是没有意义的。这就是为什么您只能打印出 h 的原因。