Rumah > Artikel > pembangunan bahagian belakang > Program Python untuk mengira perbezaan simetri antara dua senarai
Dalam Python, anda boleh menggunakan senarai untuk menyimpan berbilang item dalam satu pembolehubah. Satu daripada empat jenis data terbina dalam Python untuk menyimpan koleksi data ialah senarai; tiga yang lain ialah tupel, set dan kamus, masing-masing dengan tujuan yang unik.
Kurungan segi empat sama digunakan untuk membina senarai. Alat yang paling berkuasa dalam Python ialah senarai, kerana ia tidak semestinya homogen. Jenis data seperti integer, rentetan dan objek semuanya boleh ditemui dalam senarai. Memandangkan senarai boleh berubah, ia boleh ditukar walaupun selepas ia dibuat.
Set elemen yang berada dalam LIST1 atau LIST2 tetapi tidak dalam kedua-duanya membentuk perbezaan simetri antara kedua-dua senarai LIST1 dan LIST2.
Terdapat pelbagai cara untuk mengira perbezaan simetri antara dua senarai dalam python, kami akan mengambil cara yang paling berkesan untuk mencari perbezaan yang sama.
Kami telah menukar senarai kepada set dan kemudian membuat perbezaan simetri antara set ini.
Buat Senarai
Tukar senarai ke set
Cetak perbezaan simetri set yang ditukar
Cetak perbezaan simetri senarai
Dalam program berikut, menggunakan "dalam" kita boleh mencari perbezaan antara dua senarai. Kata kunci dalam mempunyai dua fungsi.
Tentukan sama ada nilai wujud dalam rentetan, senarai, tuple, julat, dsb.
Ulangi senarai dalam gelung for.
L_1 = [11, 12, 13] L_2 = [12, 13, 42] L_3 = [3, 42, 5] # converting lists to set set_1 = set(L_1) set_2 = set(L_2) # now print the symmetric difference when # when the converted set is passed as a parameter print(set_1.symmetric_difference(set_2)) # now print the symmetric difference when list is # passed as a parameter by converting it to a set print(set_2.symmetric_difference(L_3))
{42, 11} {13, 3, 12, 5}
Di sini, kami mencipta dua senarai dan kemudian mencipta pembolehubah sementara kosong. Kami kemudiannya menggunakan gelung for untuk mengulang nombor dalam senarai. Pernyataan If menyemak sama ada nombor itu biasa dan kemudian menambahkan elemen pada pembolehubah sementara yang pertama dibuat. Kemudian cetak senarai dengan elemen yang berbeza.
list_1 = [1, 35, 20, 25, 70, 35, 80] list_2 = [25, 80, 35] temp_3 = [] for element in list_1: if element not in list_2: temp_3.append(element) print(temp_3)
[1, 20, 70]
Dalam pendekatan ini kami menukar senarai secara eksplisit kepada set dan kemudian menggunakan operator tolak untuk mengalih keluar hanya satu daripada senarai yang lain. Pergi ke Koleksi dalam Python untuk mendapatkan rujukan koleksi lain. Ini adalah strategi yang serupa dengan yang kami gunakan sebelum ini. Satu-satunya perbezaan ialah sintaks pemahaman senarai digunakan dan bukannya gelung bersarang.
Program berikut membandingkan dua senarai: list_1 dan list_2. Ia mencipta satu set daripada senarai kedua dan kemudian menggunakannya untuk menapis sebarang nilai yang muncul dalam kedua-dua senarai. Hasilnya ialah senarai ditapis baharu (temp_3) yang mengandungi hanya elemen daripada list_1 yang tidak terdapat dalam SET_1 (list_2).
list_1 = [13, 15, 22, 25, 30, 54, 40] list_2 = [54, 45, 30, 13] SET_1 = set(list_2) temp_3 = [x for x in list_1 if x not in SET_1] print(temp_3)
[15, 22, 25, 40]
Dalam kaedah ini, elemen disalin daripada dua senarai menggunakan teknik penggabungan asas sambil menyemak secara berkala sama ada ia wujud dalam senarai lain.
Dalam program berikut - kami mentakrifkan fungsi yang dipanggil Perbezaan yang menerima dua senarai sebagai parameter. Fungsi ini mencipta list_dif senarai baharu yang mengandungi item yang tidak terdapat dalam kedua-dua senarai asal. Ia kemudian mencetak senarai baharu ini dan perbezaan antara dua senarai asal. Dalam contoh ini ia mencetak [1, 12, 25, 22, 30, 20].
# this method helps to get difference of two lists # by not using set() def Difference(list1, list2): list_dif = [i for i in list_1 + list_2 if i not in list_1 or i not in list_2] return list_dif list_1 = [1, 12, 25, 22, 30, 65, 70] list_2 = [65, 20, 70] list_3 = Difference(list_1, list_2) print(list_3)
[1, 12, 25, 22, 30, 20]
Simetriperbezaan ()Kaedah mengembalikan elemen dalam kumpulan pertama atau kedua. Tidak seperti elemen kongsi dua koleksi, kaedah ini tidak mengembalikan persimpangan.
list_1 = [23, 18, 45, 25, 40, 23, 40] list_2 = [23, 40, 35] set_difference = set(list_1).symmetric_difference(set(list_2)) temp_3 = list(set_difference) print(temp_3)
[35, 45, 18, 25]
Dalam artikel ini, kami menggunakan empat kaedah berbeza untuk mengira perbezaan simetri antara dua senarai melalui python. Setiap kaedah mempunyai beberapa keunikan dan cara yang berbeza untuk mendekati tugas.
Atas ialah kandungan terperinci Program Python untuk mengira perbezaan simetri antara dua senarai. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!