次のリストのリストを圧縮したい:
>>> 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
。機能的な解決策が好ましい。
回答:
これを試して:
>>> 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]