gpt4 book ai didi

Python:iter(x) 是否等同于 for el in x: yield el?

转载 作者:太空宇宙 更新时间:2023-11-04 08:59:53 24 4
gpt4 key购买 nike

假设有一个集合:

list = [1,2,3]

这是内置方法吗

it1 = iter(list)

相当于

def niter(x):
for el in x:
yield el

it2 = niter(list)

编辑:

为了进一步澄清,我知道 iter() 可以排除更多参数,但原则上我想知道是否它与 yield 在 niter

中所做的相同

最佳答案

没有。 iter(lst) 返回一个 list_iterator 对象,第二个例子是一个通用的 generator。两者都做同样的事情,但方式不同。 xxx_iterator 对象知道它们正在迭代的结构,并使用其特定属性来实现它们的 next 方法。通用生成器对其参数(如果有)一无所知,并依赖它们来实现迭代器协议(protocol)。所以 iter(lst) 返回 真正的 迭代器,它实际上从列表中获取项目,而你的 niter 只是一个包装器,它仅仅将作业委托(delegate)给它的参数(恰好又是 list_iterator)。

换句话说,iter(obj) 基本上是在说“亲爱的 obj,我需要一个知道如何迭代你的人”,而 for z in obj 是“我不知道”不关心如何迭代你,只需要给我值”。

关于Python:iter(x) 是否等同于 for el in x: yield el?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26528097/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com