Isih dan Permutasi Senarai Selari Serentak
Masalah:
Diberi dua senarai item, dikenali sebagai list1 dan list2, matlamatnya adalah untuk mengisih elemen dalam list1 sambil menyusun semula elemen dalam list2 pada masa yang sama agar sepadan dengan yang disusun susunan senarai1. Dalam erti kata lain, kami ingin mengekalkan kesesuaian antara elemen dalam kedua-dua senarai.
Penyelesaian:
Teknik yang digunakan secara meluas untuk masalah ini ialah "hias, susun , undecorate" simpulan bahasa:
list1, list2 = zip(*sorted(zip(list1, list2)))
Salin selepas log masuk
Kod ini menunjukkan perkara berikut langkah:
- zip(senarai1, senarai2) mencipta pasangan elemen sepadan daripada kedua-dua senarai, dengan berkesan "menghiasi" setiap elemen dengan pasangannya daripada senarai lain.
- diisih(zip( list1, list2)) mengisih pasangan berdasarkan elemen pertama (dari list1).
- zip(*...) "tidak menghiasi" pasangan yang diisih, menghasilkan senarai diisih1 dan padanan, senarai diubah suai2.
Pertimbangan Tambahan:
- Penyelesaian yang disediakan mentafsirkan sama elemen dalam list1 dengan membandingkan elemen yang sepadan dalam list2. Jika perbandingan ini tidak diingini atau mahal dari segi pengiraan, pertimbangkan untuk menggunakan fungsi kekunci alternatif:
result1, result2 = zip(*sorted(zip(list1, list2), key=lambda x: x[0]))
Salin selepas log masuk
- Mengendalikan senarai input kosong adalah penting. Jika senarai input anda mungkin kosong, pastikan anda mempunyai pengendalian ralat yang sesuai atau kes khas untuk mengelakkan ralat.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menyusun Satu Senarai Secara Serentak dan Permukan Satu Lagi untuk Mengekalkan Surat-menyurat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!