gpt4 book ai didi

python - 这个 Python 生成器是如何工作的?

转载 作者:行者123 更新时间:2023-12-01 02:41:43 25 4
gpt4 key购买 nike

有人可以解释一下这个生成器代码是做什么的吗?

>>> def f():
... return next((i for i in [{'a':1, 'b':2}, {'c':3, 'd':4}]))
...
>>> t = f()
>>> for item in t:
... print(item)
...
a
b
>>> t
{'a': 1, 'b': 2}
>>>

实际上,这个函数的设计初衷是只返回单个值吗?

最佳答案

Can someone please explain what this generator code is doing?

(i for i in [{'a':1, 'b':2}, {'c':3, 'd':4}])

这是生成器理解的语法。尝试像这样迭代它:

In [205]: for x in (i for i in [{'a':1, 'b':2}, {'c':3, 'd':4}]):
...: print(x)
...:
{'b': 2, 'a': 1}
{'d': 4, 'c': 3}

next() 函数返回生成器中的下一个项目。来自next的文档:

next(iterator[, default])

Retrieve the next item from the iterator by calling its next() method. If default is given, it is returned if the iterator is exhausted, otherwise StopIteration is raised.

在这种情况下,返回的是

{'a':1, 'b':2}

这是一本字典。如果您像这样做一样使用 for 循环,则会迭代这些键,因此您依次打印出 ab (如果你使用的是 python3.6),因为键的顺序是有保证的。在较旧的 python 版本上,您将以某种任意顺序打印 key 。

Actually, is this function designed to return only a single value?

是的。作为练习,尝试将 return 更改为 yield from,如下所示:

def f():
yield from (i for i in [{'a':1, 'b':2}, {'c':3, 'd':4}]))

关于python - 这个 Python 生成器是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45646765/

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