1. ホーム
  2. パイソン

[解決済み】リストコンプリヘンションのダブルイテレーション

2022-03-28 17:28:44

質問

Pythonでは、リスト内包の中で、次のように複数のイテレータを持つことができます。

[(x,y) for x in a for y in b]

Pythonのリスト内包のネストされたループのセマンティクスは知っています。

質問:内包されるイテレータの1つは他のイテレータを参照できるのでしょうか?言い換えれば このようなことが可能でしょうか。

[x for x in a for a in b]

ここで、外側のループの現在値は内側のループのイテレータ?

例として、ネストしたリストがあった場合。

a=[[1,2],[3,4]]

この結果を得るためには、リスト内包式はどうなるのでしょうか。

[1,2,3,4]

?? (調べたいことなので、理解度の高い回答のみ記載してください)。

解決方法は?

おや、答えが見つかったようだ。どのループが内側で、どのループが外側なのかに十分な注意を払っていなかったのです。リスト内包はこんな感じかな。

[x for b in a for x in b]

そして、そうです、1つの現在の値が次のループのイテレータになることができるのです。