ホームページ >バックエンド開発 >Python チュートリアル >Python でリストのリストを効率的に転置するにはどうすればよいですか?

Python でリストのリストを効率的に転置するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-27 11:05:09248ブラウズ

How Can I Efficiently Transpose a List of Lists in Python?

リストのリストの転置: Python 的アプローチ

次のようなリストのリストがあるとします。

l = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

それを転置することを目的としています。 in:

r = [[1, 4, 7], [2, 5, 8], [3, 6, 9]]

救済のための圧縮と解凍

Python には、複数のイテラブルを結合して、反復する zip オブジェクトを作成できる zip という強力なツールが用意されています。要素上で平行に。重要な洞察は、zip を使用してリストのリストを解凍し、結果のタプルをリストに変換することです。

Python 3 とジャグ テーブル

Python 3 の場合、次のようになります。 2 つのオプション:

list(map(list, zip(*l)))

このアプローチでは、ギザギザのテーブル (リストが

list(map(list, itertools.zip_longest(*l, fillvalue=None)))

これは、短いリストを None で埋めることによってギザギザのテーブルを処理します。

Python 2 と同種テーブル

Python 2 では、均質な場合には、より単純なアプローチがうまく機能します。テーブル:

map(list, zip(*l))

魔法の解明

プロセスを理解するには、Python 3 の最初のアプローチを検討してください:

  • 解凍します*l を使用したリストのリスト。各内部リストを個別の引数として zip.
  • zip に渡します。内部リストの要素を結合する zip オブジェクトを作成し、タプル (1, 4, 7)、(2, 5, 8)、(3, 6, 9) を生成します。
  • map 関数が適用されます。 list 関数を各タプルに変換し、それをリストに戻します。
  • 結果は、次のようなリストのリストです。

ギザギザのテーブルの処理

itertools.zip_longest は、指定されたフィル値 (デフォルト: なし) で短いリストを埋めることによってギザギザのテーブルを処理します。これにより、転置された結果内のすべてのリストが同じ長さになることが保証されます。

結論

リストのリストの転置は、データ操作における一般的なタスクです。 zip の機能を活用し、その動作を理解することで、Python で効率的なソリューションを実装できます。

以上がPython でリストのリストを効率的に転置するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。