gpt4 book ai didi

python - 这是如何在 Python 2.7.x 中生成器工作的

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

我知道 Python 中的 for x in list 循环,但我偶然发现了一种我找不到其文档的生成器。我发现下面的示例仅在列表 a 中的列表长度为 2 时才有效,或者它给出了解包错误,所以我怀疑某种 2 元组或 dict 相关的解包器可能在玩。有人可以向我解释一下这个生成器语法是如何工作的吗?

$ python                                                                                                                                            
Python 2.7.10 (default, Oct 23 2015, 19:19:21)
[GCC 4.2.1 Compatible Apple LLVM 7.0.0 (clang-700.0.59.5)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> a = [[1,2],[3,4],[5,6]]
>>> (b for c, b in a)
<generator object <genexpr> at 0x1071abaa0>
>>> [x for x in (b for c, b in a)]
[2, 4, 6]

我在调用 min 时使用此生成器的项目中遇到了它。本来我以为是传入了多个args,但是语法没有意义,单独测试发现是生成器。

https://github.com/bigbighd604/Python/blob/master/graph/Ford-Fulkerson.py#L59

最佳答案

不要被 c, b 中的逗号所迷惑。在 Python 中,逗号——而不是圆括号——定义了一个元组。你的代码等同于[x for x in (b for (c, b) in a)],它遍历a的元素,赋值给c a 中每个双元素列表的第一个元素,b 到第二个,然后将 b 分配给 x。如果 a 有一个不是双元素可迭代的元素,您将得到一个 ValueError

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

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