Listeler arası karşılaştırma

Aşağıdaki iki listeyi karşılaştırmak istiyorum. Liste2 de bulunan hangi eleman Liste1 de yok. Karşılaştırmak istediğim kısım iç listelerin 1. kısmı yani [1, 9] Liste1 de yok. İç listelerin 2. kısmı beni ilgilendirmiyor.

Liste1 = [ 
             [[1, 2], [1, 2, 3, 6, 8, 10, 11, 12]],
             [[1, 2], [1, 2, 5, 4, 6, 8, 10, 14, 13]],
             [[1, 3], [1, 2, 3, 6, 8, 10, 11, 12]],
             [[1, 4], [1, 2, 5, 4, 6, 8, 10, 14, 13]],
]

Liste2= [
             [[1, 2], [7, 15, 6, 3, 2, 4, 12, 11, 13]],
             [[1, 2], [12, 11, 10, 8, 6, 3, 2, 1]],
             [[1, 3], [12, 11, 10, 8, 6, 3, 2, 1]],
             [[1, 3], [13, 14, 10, 8, 6, 4, 5, 2, 1]],
             [[1, 4], [13, 14, 10, 8, 6, 4, 5, 2, 1]],
             [[1, 4], [14, 13, 11, 10, 7, 15, 9]],
             [[1, 4], [13, 11, 12, 4, 2, 3, 6, 15, 7]],
             [[1, 9], [1, 2, 3, 6, 8, 10, 11, 12]],
             [[1, 9], [1, 2, 5, 4, 6, 8, 10, 14, 13]]
 ]

Verdiğiniz listeleri kullanmak yerine kendi oluşturduğum iki farkı listeyi karşılaştırdım.
Benim verdiğim kodlardan mantığı çözer ve sonrasında kendi amacınıza göre kullanırsınız.
Bu şekilde daha iyi öğrenirsiniz diye düşünüyorum.

# karşılaştırılacak listelerimiz:
list1 = ["elma", "kiraz", "armut", "limon"]
list2 = ["greyfurt", "limon", "armut", "muz" ]
# farkın kaydedileceği liste 
differents = [] 
# farkı göstermek için kuracağımız döngü
for element in list1:
   if element in list2:
       differents.append(element)
# çıktımızı almamız için : 
print(differents) 

Öncelikle cevabınız için teşekkür ederim. Aslında bunu bende yapmıştım sanırım yazmadığım için sorum eksik oldu. Bu kodu yazıyorum ama istediğim sonuç gelmiyor. Tam olarak istediğim iç içe listelerde bunu uygulamak olduğu için kodu düzenleyemedim.

Kodlarınızı paylaşırsanız nerede hata yaptığınızı görebiliriz ve daha kolay yardımcı olabiliriz.

Kodlarınızı nasıl paylaşmanız gerektiği hakkında üstteki bağlantıda bilgi bulunuyor.


İç içe listelerde de aynı mantığı uygulamalısınız. Değişen hiçbir şey yok.
Listelerin nasıl indexlendiğini bilmelisiniz sadece.
Listelerin nasıl indexlendiği hakkında, liste öğelerine nasıl erişebileceğiniz hakkında aşağıdaki bağlantıdan bilgi edinebilirsiniz.
https://python-istihza.yazbel.com/listeler_ve_demetler.html#listelerin-ogelerine-erismek

Şöyle gösteriyim. İlk fotoğraftaki listemde [1, 9] ile başlayanlar var fakat alttaki listede bu yok. Bana bunu vermesini istiyorum. Sonuç olarak sadece [1, 9] sonucunu. aşağıdaki kodu yazmıştım fakat bana sonuç olarak direk ilk elemanı veriyor. Aslında kodun şurasıda yanlış bana ortakları veriyor. Ben olmayanı istiyorum.

aktarmalihatlar = []


for eleman in liste2[0]:
   if eleman in liste[0]:
       aktarmalihatlar.append(eleman)
       print(eleman)


if deyimini kullanmanızın ardından not deyimini kullanın :smiley:
if not eleman in...
“listede bu eleman yoksa…” demek oluyor bu durumda.
Bu da zaten ortak olmayan elemanları elde etmenizi sağlar.
Edit:
Benim kodlar da yanlış oldu. Ortak olanlar alınacak diye düşünerek yazdım.
Ortak olmayanları bu kodlar gösterir:

Fark sadece not deyimi ile elemanın list2’de olmadığını doğrulamam. Bu sayede differents adlı listede ortak olmayan elemanları görürüz.
Anlatabildim değil mi ?

Aaa evet evet anladım basit düşünme sorunum var sanırım

1 Beğeni

Buradaki mantik sorununu ortaya cikartayim, belki ileride yardimci olur:

Asagidaki iki listeyi degil, asagidaki iki listenin ilk elemanlarindan olusan iki listeyi ([x[0] for x in Liste1], [x[0] for x in Liste2]) karsilastirmak istiyorsun. Ic listelerin ikinci kismi seni ilgilendirmiyorsa at.

Hatta ilk elemanlarin sadece olup olmadiklari onemli oldugu icin (pozisyonlari ve sayilari onemli olmadigi icin) ilk elemanlardan olusan iki kumeyi karsilastirmak istiyorsun. (set([tuple(x[0]) for x in Liste1]), set([tuple(x[0]) for x in Liste2]))

Nasil karstilastirmak istedigini soylememissin ama surada cok kullanilan karsilastirma islemlerinin tamami var.

1 Beğeni