【发布时间】:2017-08-03 00:03:00
【问题描述】:
当我使用以下内容时:
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 在这两种情况下都是迭代器对象,为什么它们会给我不同的结果?
【问题讨论】:
-
for index in range(len(anything)):在大多数情况下都是一个错误 --- Python 会为您完成所有这些繁重的工作。您的循环可以像for char in string: print char一样简单。请参阅 Ned Batchelder 的“Loop Like a Native”(30 分钟 video from PyCon US 2013),了解处理许多此类情况的简单(“Pythonic”)方法。
标签: python python-2.7 python-3.x next iterable