Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimanakah Saya Boleh Mengubah Senarai Senarai dalam Python dengan Cekap?

Bagaimanakah Saya Boleh Mengubah Senarai Senarai dalam Python dengan Cekap?

Barbara Streisand
Lepaskan: 2024-12-27 11:05:09
asal
212 orang telah melayarinya

How Can I Efficiently Transpose a List of Lists in Python?

Memindahkan Senarai Senarai: Pendekatan Pythonic

Diberikan senarai senarai, seperti:

l = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
Salin selepas log masuk

kami berhasrat untuk mengubahnya, terhasil dalam:

r = [[1, 4, 7], [2, 5, 8], [3, 6, 9]]
Salin selepas log masuk

Mengzip dan Membongkar untuk Menyelamat

Python menyediakan alat berkuasa dipanggil zip yang membolehkan kami menggabungkan berbilang iterable, mencipta objek zip yang berulang atas unsur-unsur secara selari. Wawasan utama ialah menyahzip senarai senarai menggunakan zip dan kemudian menukar tupel yang terhasil kepada senarai.

Python 3 dan Jadual Bergerigi

Untuk Python 3, kami ada dua pilihan:

list(map(list, zip(*l)))
Salin selepas log masuk

Pendekatan ini mungkin berlaku litar pintas untuk jadual bergerigi (di mana senarai mempunyai panjang yang berbeza).

list(map(list, itertools.zip_longest(*l, fillvalue=None)))
Salin selepas log masuk

Ini mengendalikan jadual bergerigi dengan mengisi senarai yang lebih pendek dengan Tiada.

Python 2 dan Jadual Homogen

Dalam Python 2, pendekatan yang lebih mudah berfungsi dengan baik untuk homogen jadual:

map(list, zip(*l))
Salin selepas log masuk

Menyingkap Sihir

Untuk memahami proses, pertimbangkan pendekatan pertama dalam Python 3:

  • Kami membongkar senarai senarai menggunakan *l, menghantar setiap senarai dalaman sebagai hujah yang berasingan kepada zip.
  • zip mencipta objek zip yang menggabungkan elemen senarai dalam, menghasilkan tupel: (1, 4, 7), (2, 5, 8), (3, 6, 9).
  • Fungsi peta menggunakan fungsi senarai untuk setiap tuple, menukarnya kembali kepada senarai.
  • Hasilnya ialah senarai senarai, sebagai dikehendaki.

Mengendalikan Jadual Bergerigi

itertools.zip_longest mengendalikan jadual bergerigi dengan mengisi senarai yang lebih pendek dengan nilai isian yang ditentukan (lalai: Tiada). Ia memastikan bahawa semua senarai dalam hasil transposed mempunyai panjang yang sama.

Kesimpulan

Memindahkan senarai senarai ialah tugas biasa dalam manipulasi data. Dengan memanfaatkan kuasa zip dan memahami kelakuannya, kami boleh melaksanakan penyelesaian yang cekap dalam Python.

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

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan