Isih Senarai Menggunakan Nilai Sepadan daripada Senarai Selari
Anda mempunyai senarai rentetan (X) dan senarai integer yang sepadan (Y ). Matlamat anda adalah untuk mengisih rentetan dalam senarai X berdasarkan nilai dalam senarai Y. Dalam kes ini, output yang dikehendaki ialah:
["a", "d", "h", "b", "c", "e", "i", "f", "g"]
Penyelesaian Kod Terpendek
Cara terpendek untuk mencapai ini ialah menggunakan pemahaman senarai dengan fungsi diisih dan zip:
[x for _, x in sorted(zip(Y, X))]
Kod ini mengezip senarai bersama-sama dan kemudian mengisihnya berdasarkan elemen pertama (integer daripada senarai Y). Ia kemudian mengekstrak elemen kedua (rentetan daripada senarai X) daripada senarai diisih.
Contoh
Pertimbangkan senarai:
X = ["a", "b", "c", "d", "e", "f", "g", "h", "i"] Y = [ 0, 1, 1, 0, 1, 2, 2, 0, 1]
Menggunakan kod:
Z = [x for _,x in sorted(zip(Y,X))] print(Z) # ["a", "d", "h", "b", "c", "e", "i", "f", "g"]
Umum Penyelesaian
Penyelesaian yang lebih umum ialah menggunakan fungsi diisih dengan fungsi kekunci tersuai:
[x for _, x in sorted(zip(Y, X), key=lambda pair: pair[0])]
Di sini, fungsi kekunci mengekstrak elemen pertama daripada setiap pasangan dalam zip senarai, membolehkan anda mengisih berdasarkan integer dalam senarai Y.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Isih Satu Senarai Berdasarkan Nilai Senarai Sepadan dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!