リスト内包表記の独立した反復子
Python では、リスト内包表記により複数の反復ループが可能になります。次の例を考えてみましょう:
[(x, y) for x in a for y in b]
ここで、a と b はシーケンスです。この内包表記では、a と b のデカルト積から要素のペアが作成されます。
反復子は依存できますか?
リスト内包表記内の 1 つの反復子は別の反復子を参照できますか?答えは「はい」です。次のコードはそれを示しています。
[x for x in a for a in b]
この内包では、外側のループ反復子 a が反復子になります。内側のループの場合。これは、ネストされたリストを効果的に平坦化します。
例
ネストされたリストがある場合:
a = [[1, 2], [3, 4]]
次のリスト内包表記は、それを単一のリストに平坦化します。リスト:
[x for x in a for a in b]
結果:
[1, 2, 3, 4]
ジェネレーターを使用した代替ソリューション
提供された Python コードでは、テキストは文として保存され、タスクは単語の単一のリストを抽出します。ジェネレーターを使用してこれを実現する方法は次のとおりです:
text = (("Hi", "Steve!"), ("What's", "up?"))
gen = (word for sentence in text for word in sentence)
gen 変数は、単語のフラット化されたリストを生成します:
for word in gen:
print(word)
出力:
Hi Steve! What's up?
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3