Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在next函数中使用iter函数_Python_Python 2.7_Python 3.x_Next_Iterable - Fatal编程技术网

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”)方法。