ホームページ >バックエンド開発 >Python チュートリアル >リスト内包表記は依存反復子を持つことができますか?
リスト内包表記の独立した反復子
Python では、リスト内包表記により複数の反復ループが可能になります。次の例を考えてみましょう:
<code class="python">[(x, y) for x in a for y in b]</code>
ここで、a と b はシーケンスです。この内包表記は、a と b のデカルト積から要素のペアを作成します。
反復子は依存できますか?
リスト内包表記内の 1 つの反復子は別の反復子を参照できますか?答えは「はい」です。次のコードはそれを示しています。
<code class="python">[x for x in a for a in b]</code>
この理解では、外側のループの反復子 a が内側のループの反復子になります。これは、ネストされたリストを効果的に平坦化します。
例
ネストされたリストがある場合:
<code class="python">a = [[1, 2], [3, 4]]</code>
次のリスト内包表記はそれを平坦化します。単一のリストに変換します:
<code class="python">[x for x in a for a in b]</code>
結果:
[1, 2, 3, 4]
ジェネレーターを使用した代替ソリューション
提供された Python コードのテキストは次のとおりです。文として保存されており、そのタスクは単語の 1 つのリストを抽出することです。ジェネレーターを使用してこれを実現する方法は次のとおりです。
<code class="python">text = (("Hi", "Steve!"), ("What's", "up?")) gen = (word for sentence in text for word in sentence)</code>
gen 変数は、単語のフラット化されたリストを生成します。
<code class="python">for word in gen: print(word)</code>
出力:
Hi Steve! What's up?
以上がリスト内包表記は依存反復子を持つことができますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。