Cara membuat zip daftar dalam daftar

92

Saya ingin membuat zip dari daftar berikut:

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

Ini dapat dicapai dengan zippenerapan saat ini hanya jika daftar tersebut dipecah menjadi beberapa komponen:

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

Tidak tahu cara membagi daftar dan meneruskan elemen individu ke zip. Solusi fungsional lebih disukai.

Vijay Mathew
sumber

Jawaban:

146

Coba ini:

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

Lihat Membuka Daftar Argumen :

Situasi sebaliknya terjadi ketika argumen sudah ada dalam daftar atau tuple tetapi perlu dibuka paketnya untuk panggilan fungsi yang memerlukan argumen posisi terpisah. Misalnya, fungsi built-in range () mengharapkan argumen start dan stop yang terpisah. Jika tidak tersedia secara terpisah, tulis pemanggilan fungsi dengan * -operator untuk mengekstrak argumen dari daftar atau tupel:

>>> 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]
Mark Byers
sumber
4
Lihat docs.python.org/tutorial/… untuk mengetahui cara kerjanya.
ameer
2
Saya ingin melihat alternatif jika Anda memiliki daftar dengan jutaan entri. Mungkin bukan ide yang baik untuk membongkar satu juta item dalam panggilan fungsi ...
Blixt