Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Boleh Menyusun Dua Senarai Selari dengan Cekap dalam Python Semasa Mengekalkan Penyegerakan?

Bagaimanakah Saya Boleh Menyusun Dua Senarai Selari dengan Cekap dalam Python Semasa Mengekalkan Penyegerakan?

Barbara Streisand
Barbara Streisandasal
2024-12-11 14:49:12572semak imbas

How Can I Efficiently Sort Two Parallel Lists in Python While Maintaining Synchronization?

Isih Senarai dengan Pilihatur Senarai Selari

Memandangkan dua senarai selari, satu boleh diisih sambil menyusun semula satu lagi dalam penyegerakan. Ini dicapai dengan mengisih senarai pertama dan menggunakan indeks elemen tersusun semula untuk menyusun semula senarai kedua.

Satu pendekatan biasa ialah simpulan bahasa "hias, isi, tidak hias", yang mengezip dua senarai, mengisihnya berdasarkan senarai pertama, dan kemudian unzip hasilnya. Menggunakan fungsi zip Python, ini boleh dilaksanakan secara ringkas seperti berikut:

list1, list2 = zip(*sorted(zip(list1, list2)))

Walau bagaimanapun, untuk senarai yang lebih besar, versi di tempat yang lebih cekap wujud:

tups = zip(list1, list2)
tups.sort()
list1, list2 = zip(*tups)

Untuk senarai yang mengandungi bukan -elemen setanding, indeks pengisihan menggunakan fungsi lambda boleh digunakan. Sebagai alternatif, fungsi utama boleh disediakan untuk isihan untuk mengelak daripada membandingkan elemen senarai kedua:

result1, result2 = zip(*sorted(zip(list1, list2), key=lambda x: x[0]))

Input kosong harus dikendalikan secara berasingan dan seseorang harus sedar bahawa versi di tempat mungkin lebih pantas sedikit , terutamanya untuk senarai kecil.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menyusun Dua Senarai Selari dengan Cekap dalam Python Semasa Mengekalkan Penyegerakan?. 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