Python, iki listeyi karşılaştırmak için birçok yöntem içerir. Karşılaştırma, veri öğelerinin aynı olup olmadıklarına bakılmaksızın listedeki başka bir veri öğesi ile kontrol edildiği süreçtir.
1 2 3 4 5 |
list1 - [11, 12, 13, 14, 15] list2 - [11, 12, 13, 14, 15] Çıktı - İki Liste Aynı |
İki listeyi karşılaştırma yöntemleri aşağıda verilmiştir.
- cmp() fonksiyonu
- set() fonksiyonu ve == operatörü
- sort() fonksiyonu ve == operatörü
- collection.counter() fonksiyonu
- reduce() ve map() fonksiyonu
set() fonksiyonu ve == operatörü
Python set() fonksiyonu, öğelerin sırasına dikkat etmeden listeyi kümeye işler. Ayrıca, listenin veri öğelerini karşılaştırmak için eşittir operatörünü (==) kullanırız. Aşağıdaki örneği anlayalım.
Ayrıca bakınız: Python Listeler ve Demetler
Örnek:
1 2 3 4 5 6 7 8 9 10 11 12 |
list1 = [11, 12, 13, 14, 15] list2 = [12, 13, 11, 15, 14] a = set(list1) b = set(list2) if a == b: print("list1 ile list2 eşittir.") else: print("list1 ile list2 eşit değildir.") |
Çıktı:
1 2 3 4 |
list1 ile list2 eşittir. >>> |
== operatörlü sort() metodu
Listeleri sıralamak için Python sort() işlevi kullanılır. Aynı listenin öğeleri, ifade ettiği dizin konumuyla aynıdır; listeler eşittir.
Örnek:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
import collections list1 = [10, 20, 30, 40, 50, 60] list2 = [10, 20, 30, 50, 40, 70] list3 = [50, 10, 30, 20, 60, 40] # listeyi sıralama list1.sort() list2.sort() list3.sort() if list1 == list2: print("list1 ile list2 aynıdır") else: print("list1 ile list2 aynı değildir") if list1 == list3: print("list1 ile list3 aynıdır") else: print("list1 ile list3 aynı değildir.") |
Çıktı:
1 2 3 4 5 |
list1 ile list2 aynı değildir list1 ile list3 aynıdır >>> |
Collection.counter() fonksiyonu
collection modülü, listeyi verimli bir şekilde karşılaştıran counter() metodunu sağlar. Verileri sözlük biçiminde <değer>: <sıklık> depolar ve listedeki öğelerin sıklığını sayar.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
import collections list1 = [10, 20, 30, 40, 50, 60] list2 = [10, 20, 30, 50, 40, 70] list3 = [50, 10, 30, 20, 60, 40] if collections.Counter(list1) == collections.Counter(list2): print(" list1 ile list2 aynıdır.") else: print("list1 ile list2 aynı değildir.") if collections.Counter(list1) == collections.Counter(list3): print("list1 ile list3 aynıdır.") else: print("list1 ile list3 aynı değildir.") |
Çıktı:
1 2 3 4 5 |
list1 ile list2 aynı değildir. list1 ile list3 aynıdır. >>> |
reduce() ve map()
map() fonksiyonu, bir işlevi ve Python yinelenebilir nesneyi (liste, tuple, dizge, vb.) bağımsız değişken olarak kabul eder ve bir map(harita) nesnesi döndürür. Fonksiyon, listenin her bir öğesine uygular ve sonuç olarak bir yineleyici (iterator) döndürür.
Ayrıca, reduce() metodu, verilen işlevi yinelenebilir nesneye yinelemeli olarak uygular.
Burada her iki yöntemi bir arada kullanacağız. map() işlevi, her yinelenebilir nesneye işlevi (kullanıcı tanımlı veya lambda işlevi olabilir) uygular ve reduce() işlevi bunun özyinelemeli bir şekilde uygulanmasını sağlar.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
import functools list1 = [10, 20, 30, 40, 50] list2 = [10, 20, 30, 50, 40, 60, 70] list3 = [10, 20, 30, 40, 50] if functools.reduce(lambda x, y: x and y, map(lambda a, b: a == b, list1, list2), True): print("list1 ile list2 aynı") else: print("list1 ile list2 aynı değil") if functools.reduce(lambda x, y: x and y, map(lambda a, b: a == b, list1, list3), True): print("list1 ile list3 aynı") else: print("list1 ile list3 aynı değil") |
1 2 3 4 5 |
list1 ile list2 aynı değil list1 ile list3 aynı >>> |
Yorum Yap