【问题标题】:Using iter function inside next function [duplicate]在下一个函数中使用iter函数[重复]
【发布时间】: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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-19
    • 2017-03-06
    • 1970-01-01
    • 2017-03-07
    • 2020-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多