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
Susan Sarandonasal
2024-12-28 17:10:17593semak imbas

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)))

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)

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]))

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!

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