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.

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]

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.