1. ホーム
  2. python

ネストされたリスト内包の仕組みの説明?

2023-08-30 20:13:15

質問

理解するのに問題はないのですか?

a = [1,2,3,4]
b = [x for x in a]

これで終わりかと思いきや、こんなスニペットを発見。

a = [[1,2],[3,4],[5,6]]
b = [x for xs in a for x in xs]

というのは b = [1,2,3,4,5,6] . 問題なのは、この構文を理解するのに苦労していることです。 [x for xs in a for x in xs] の構文を理解するのに苦労しています。

どのように解決するのですか?

ああ、理解しがたい "nested" comprehension ですね。 ループは内包と同じ順序で展開されます。

[leaf for branch in tree for leaf in branch]

このように考えることができます。

for branch in tree:
    for leaf in branch:
        yield leaf

この PEP202 は、この構文に "the last index varying fastest" が "the Right One" であると主張していますが、特に、以下の説明もありません。 なぜ .