Membandingkan Senarai Tidak Tertib Objek Tidak Boleh Cincang dengan Cekap
Senarai tidak tersusun (bukan set) menimbulkan cabaran apabila membandingkannya untuk kesamarataan, kerana mereka elemen boleh dalam sebarang susunan. Kesukaran ini menjadi lebih ketara apabila berurusan dengan objek tidak boleh cincang, seperti contoh kelas yang ditentukan pengguna.
Untuk memudahkan perbandingan sedemikian, pelbagai pendekatan wujud dengan kerumitan masa yang berbeza-beza:
O(n)
Untuk objek boleh cincang, Kaunter menyediakan penyelesaian optimum:
def compare(s, t): return Counter(s) == Counter(t)
O(n log n)
Jika objek boleh dipesan, diisih menawarkan alternatif yang sesuai:
def compare(s, t): return sorted(s) == sorted(t)
O(n * n)
Apabila kebolehtetapan atau kebolehaturan tidak tersedia, pendekatan mudah menggunakan kesaksamaan boleh digunakan:
def compare(s, t): t = list(t) # make a mutable copy try: for elem in s: t.remove(elem) except ValueError: return False return not t
Dengan memilih penyelesaian yang sesuai berdasarkan sifat objek anda, anda boleh membandingkan senarai tidak tertib dengan cekap, walaupun apabila elemen tidak boleh dicincang atau boleh dipesan.
Atas ialah kandungan terperinci Bagaimana untuk Membandingkan Senarai Objek Tidak Boleh Hash yang Tidak Teratur dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!