ホームページ > バックエンド開発 > Python チュートリアル > リスト内包表記は依存反復子を持つことができますか?

リスト内包表記は依存反復子を持つことができますか?

Barbara Streisand
リリース: 2024-11-02 13:21:02
オリジナル
724 人が閲覧しました

 Can List Comprehensions Have Dependent Iterators?

リスト内包表記の独立した反復子

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 = ((&quot;Hi&quot;, &quot;Steve!&quot;), (&quot;What's&quot;, &quot;up?&quot;))
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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート