Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimanakah Saya Boleh Mengisih Pelbagai Senarai dalam Python Semasa Mengekalkan Penjajaran?

Bagaimanakah Saya Boleh Mengisih Pelbagai Senarai dalam Python Semasa Mengekalkan Penjajaran?

Susan Sarandon
Lepaskan: 2024-12-28 17:10:17
asal
589 orang telah melayarinya

How Can I Sort Multiple Lists in Python While Maintaining Alignment?

Isih Senarai Semasa Mengekalkan Penjajaran

Apabila bekerja dengan berbilang senarai selari, anda mungkin perlu mengisih satu senarai sambil mengekalkan susunan unsur yang sepadan dalam senarai lain. Untuk mencapai matlamat ini, kami mempersembahkan dua pendekatan klasik.

Idiom "Hias, Susun, Tidak Hias"

Teknik ini memudahkan tugas menggunakan fungsi zip terbina dalam Python, yang menggabungkan elemen daripada berbilang senarai menjadi tupel:

list1 = [3, 2, 4, 1, 1]
list2 = ['three', 'two', 'four', 'one', 'one2']
list1, list2 = zip(*sorted(zip(list1, list2)))
Salin selepas log masuk

Selepas mengisih tupel mengikut elemen pertama (senarai1), susunan digunakan pada kedua-dua senarai.

Isih Di Tempat

Untuk meningkatkan kelajuan, anda boleh menggunakan pendekatan pengisihan di tempat:

tups = zip(list1, list2)
tups.sort()
result1, result2 = zip(*tups)
Salin selepas log masuk

Pendekatan ini biasanya mengatasi prestasi versi satu baris untuk senarai kecil tetapi menjadi setanding untuk senarai yang lebih besar kerana zip yang dioptimumkan Python rutin.

Pendekatan Alternatif

  1. Isih Indeks: Jika membandingkan elemen senarai kedua tidak cekap atau tidak disokong, isikan indeks dan gunakannya untuk menyusun semula senarai.
  2. Fungsi Utama: Tentukan fungsi utama yang disusun berdasarkan senarai pertama tanpa membandingkan elemen senarai kedua:
list1 = [3, 2, 4, 1, 1]
list2 = [num * num for num in list1]
result1, result2 = zip(*sorted(zip(list1, list2), key=lambda x: x[0]))
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengisih Pelbagai Senarai dalam Python Semasa Mengekalkan Penjajaran?. 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