我知道Python中的for x in list
循環,但我偶然發現了一種我找不到的文檔生成器。我發現下面的例子只適用於列表a
中的列表長度爲2,或者它給出了拆包錯誤,所以我懷疑某種2元組或字典相關的解包器可能在場。有人可以向我解釋這個生成器語法的工作原理嗎?這是怎麼回事,在發生器工作在Python 2.7.x
$ 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
項目。最初我以爲這是傳入的多個參數,但語法沒有意義,並且單獨測試它顯示了一個生成器。
https://github.com/bigbighd604/Python/blob/master/graph/Ford-Fulkerson.py#L59
[https://www.python.org/dev/peps/pep-0289/](https://www.python.org/dev/peps/pep-0289/) – BPL
'(二(a)中的c,b相當於'(b代表a中的(c,b))' –
您將'a'解壓爲2個值'c'和'b',然後只取'b'。 –