Python 在next函数中使用iter函数
当我使用以下命令时:Python 在next函数中使用iter函数,python,python-2.7,python-3.x,next,iterable,Python,Python 2.7,Python 3.x,Next,Iterable,当我使用以下命令时: 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和siterable都是迭代器对象,为什么它们会给出不同的结果?在第一种情况下,您
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
和siterable
都是迭代器对象,为什么它们会给出不同的结果?在第一种情况下,您会在循环中重复调用iter
。当您调用iter
时,它会为字符串生成一个新的迭代器,新的迭代器从一开始就开始。一次又一次地从头开始是没有意义的。这就是为什么只打印出h
。在第一个循环中,您反复调用iter
。当您调用iter
时,它会为字符串生成一个新的迭代器,新的迭代器从一开始就开始。一次又一次地从头开始是没有意义的。这就是为什么只打印出h
。对于范围内的索引(len(anything)):
在大多数情况下都是一个错误---Python将为您完成所有的工作。对于字符串中的字符:print char,循环可以像一样简单。请参阅Ned Batchelder的“”(30分钟),以了解处理许多类似情况的简单(“Pythonic”)方法。对于范围内的索引(len(anything)):
在大多数情况下都是一个错误——Python将为您完成所有的工作。对于字符串中的字符:print char
,循环可以像一样简单。请参阅Ned Batcheld的“”(30分钟),了解处理此类案件的简单(“Pythonic”)方法。