web-dev-qa-db-ja.com

リスト内のリストを圧縮する方法

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

>>> 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に渡す方法がわかりません。機能的な解決策が好ましい。

81
Vijay Mathew

これを試して:

>>> 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]
129
Mark Byers