Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Boleh Memindahkan Senarai Senarai dalam Python?

Bagaimanakah Saya Boleh Memindahkan Senarai Senarai dalam Python?

Patricia Arquette
Patricia Arquetteasal
2024-12-25 20:25:11527semak imbas

How Can I Transpose a List of Lists in Python?

Memindahkan Senarai Senarai

Diberikan senarai senarai, seperti:

l = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

Matlamat kami ialah untuk menukar senarai, menghasilkan:

r = [[1, 4, 7], [2, 5, 8], [3, 6, 9]]

Menggunakan zip

Fungsi zip() dalam Python menggabungkan elemen daripada berbilang iterable ke dalam satu senarai tupel. Kita boleh menggunakan zip untuk mencipta senarai alih dengan menghantar senarai asal sebagai jujukan hujah:

result = list(map(list, zip(*l)))

Senarai luar() menukar tupel kepada senarai, dan fungsi map() menggunakan transformasi ini kepada setiap elemen dalam hasil zip.

Menggunakan zip_longest

The Fungsi itertools.zip_longest() adalah serupa dengan zip, tetapi ia tidak membuang data jika iterables mempunyai panjang yang berbeza. Ia mengisi iterable yang lebih pendek dengan nilai isian yang ditentukan (Tiada secara lalai):

from itertools import zip_longest
result = list(map(list, zip_longest(*l, fillvalue=None)))

Penjelasan

Kunci kepada transposisi ialah penggunaan zip untuk menggabungkan elemen daripada subsenarai senarai asal. Fungsi zip() menjana tupel yang mengandungi satu elemen daripada setiap subsenarai pada indeks yang sama. Tuple ini kemudiannya ditukar kepada senarai untuk mencipta baris senarai yang ditranspose.

Dengan menggunakan operator * untuk membongkar senarai asal sebagai hujah ke zip, kami boleh menukar senarai dalam satu baris kod. Fungsi map() digunakan untuk memastikan bahawa hasilnya ialah senarai senarai.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memindahkan Senarai Senarai dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn