リストをリストに圧縮する方法


91

次のリストのリストを圧縮したい:

>>> zip([[1,2], [3,4], [5,6]])
[[1,3,5], [2,4,6]]

これはzip、リストが個々のコンポーネントに分割されている場合にのみ、現在の実装で実現できます。

>>> zip([1,2], [3,4], [5,6])
   (1, 3, 5), (2, 4, 6)]

リストを分割して個々の要素をに渡す方法がわかりませんzip。機能的な解決策が好ましい。

回答:


146

これを試して:

>>> zip(*[[1,2], [3,4], [5,6]])
[(1, 3, 5), (2, 4, 6)]

引数リストの解凍を参照してください。

逆の状況は、引数がすでにリストまたはタプルにあるが、個別の位置引数を必要とする関数呼び出しのために解凍する必要がある場合に発生します。たとえば、組み込みのrange()関数は、個別の開始引数と停止引数を想定しています。個別に使用できない場合は、*演算子を使用して関数呼び出しを記述し、リストまたはタプルから引数を解凍します。

>>> range(3, 6)             # normal call with separate arguments
[3, 4, 5]
>>> args = [3, 6]
>>> range(*args)            # call with arguments unpacked from a list
[3, 4, 5]

4
これがどのように機能するかについては、docs.python.org / tutorial /…を参照してください。
ameer 2010年

2
百万のエントリがあるリストがある場合に備えて、別の方法を探したいと思います。...関数呼び出しで百万の項目をアンパックするのは良い考えではないかもしれません
Blixt
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.