Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimana untuk Membandingkan Senarai Tidak Tertib dengan Elemen Berbeza dengan Cekap?

Bagaimana untuk Membandingkan Senarai Tidak Tertib dengan Elemen Berbeza dengan Cekap?

DDD
Lepaskan: 2024-11-28 02:47:10
asal
303 orang telah melayarinya

How to Efficiently Compare Unordered Lists with Different Elements?

Membandingkan Senarai Tidak Tersusun dengan Elemen Berbeza

Membandingkan dua senarai tidak tersusun dengan elemen berbeza boleh menjadi mencabar, terutamanya jika elemen adalah objek kompleks. Soalan ini menangani isu ini.

Teknik Perbandingan yang Cekap

Penyelesaian yang disediakan menggariskan tiga kaedah untuk membandingkan senarai tidak tertib dengan pelbagai kerumitan masa:

  1. O( n): Menggunakan kaedah Counter() adalah sesuai jika objek boleh dicincang. Ia mengira kejadian setiap elemen dan membandingkan pembilang yang terhasil.
def compare(s, t):
    return Counter(s) == Counter(t)
Salin selepas log masuk
  1. O(n log n): Kaedah sorted() boleh digunakan jika objek boleh dipesan. Ia mengisih kedua-dua senarai dan membandingkan jujukan diisih yang terhasil.
def compare(s, t):
    return sorted(s) == sorted(t)
Salin selepas log masuk
  1. O(n * n): Pendekatan ini sesuai jika objek tidak boleh dicincang mahupun boleh dipesan. Ia berulang pada satu senarai dan menyemak sama ada setiap elemen boleh dialih keluar daripada yang lain.
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
Salin selepas log masuk

Memilih teknik perbandingan yang sesuai bergantung pada sifat objek dalam senarai dan kerumitan masa yang diperlukan.

Atas ialah kandungan terperinci Bagaimana untuk Membandingkan Senarai Tidak Tertib dengan Elemen Berbeza dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan