ホームページ >バックエンド開発 >Python チュートリアル >`str(_) for _ in xrange(10)` は Python の List ですか、それとも Iterable ですか?
角括弧なしの Python リスト内包表記
Python の "join" 関数を使用する場合、引数としてイテラブルが必要です。通常、リスト内包表記は角括弧で囲まれますが、省略することもできます。この一見逆説的な動作により、式 "str(_) for _ in xrange(10)" はリストまたは反復可能を生成しますか?
ジェネレーター式
説明は Python のジェネレーター式にあります。これはリスト内包表記と同様の表記法を持ちますが、角括弧がありません。ジェネレーター式は、要求に応じて要素を一度に 1 つずつ生成するため、メモリ効率が高く、パフォーマンスが向上します。「結合」の例では、「str(_) for _ in xrange(10)」は、遅延生成するジェネレーター式です。 0 から 9 までの数値の文字列表現を生成します。このジェネレータ式は反復可能であり、「結合」関数の条件を満たします。パフォーマンスに関する考慮事項
ジェネレーター式は一般にリスト内包表記よりもパフォーマンス上の利点がありますが、「結合」の場合は必ずしもそうとは限りません。 「結合」関数ではデータを 2 回渡す必要があるため、リスト全体をメモリ内に保持することで利点が得られます。その結果、「結合」コンテキスト。ベンチマークによって、このパフォーマンス上の利点が確認されています。結論
ジェネレーター式を理解することは、Python コードを最適化するために重要です。ただし、「結合」という特定のケースでは、関数はリスト全体を 2 回反復する必要があるため、従来のリスト内包表記の方がより効率的なオプションとなります。
以上が`str(_) for _ in xrange(10)` は Python の List ですか、それとも Iterable ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。