2 listeyi karşılaştırma yardım

Merhaba
2 farklı liste var

  1. listenin içindeki elemanlardan herhangi biri 2.listenin içinde de var mı diye karşılaştırmak ve varsa olan elemanı yazdırmak istiyorum. Yapamadım bir türlü yardım eder misiniz?

Yazbel belgelerinden kümeler konusuna bakın.

1 Beğeni

Merhaba.

1 Beğeni

“Aitlik işleçleri, bir karakter dizisi ya da sayının, herhangi bir veri tipi içinde bulunup bulunmadığını sorgulamamızı sağlayan işleçlerdir.”

Yani ‘in’ işlecini kullanarak herhangi bir listenin içinde eleman arayabiliriz. Sorunuz doğrultusunda iki tane listemiz olsun

liste1 = [1,2,3]
liste2 = [3,4,5]

Bu listelerin içinde aynı sayıları bulmak istiyoruz. Mantık olarak bir listeyi dönerek içindeki her sayıya ulaşabilir ve aynı zamanda diğer listenin içinde var mı diye kontrol edebiliriz.

liste1 = [1,2,3]
liste2 = [3,4,5]

for eleman in liste1:    # liste1 in her elemanını dönüyoruz.
    if eleman in liste2: # liste1 in her elemanı için o elemanın liste2'de olup olmadığını kontrol ediyoruz.
        print(eleman)    # eğer varsa elemanı yazdırıyoruz.

Çıktı:

3
2 Beğeni

Arkadaşın önerdiği yöntem sorununuzu çözer. Alternatif yöntemler gelişrtirmek adına merak ettiğim birşey var,
1- Listelerde verdiğiniz örneklerdeki gibi sadece tamsayı türünde veriler mı var?
2- Karşılaştıracağınız listeler içinde tam sayı türünde veriler varsa en büyük tam sayının değeri belli mi yoksa programın her çalıştırılmasında farklı mı

1 Beğeni

Bu işlem kümelerle de kolayca yapılabilir.

1 Beğeni

liste = [“arşiv”,“avize”,“bakış”,“balık”,“beyaz”,
“binek”,“bitki”,“bıçak”,“büyük”,“ceviz”,
“çetin”,“çiçek”,“daima”,“deste”,“dokuz”,
“dosya”,“dünya”,“fetih”,“garip”,“kavun”,
“kitap”,“köpek”,“küçük”,“lamba”,“lisan”,
“magma”, “makas”,“meyva”,“nokta”,“salam”,
“siyah”,“tabii”,“venüs”,“yeşil”,“yirmi”]

def sifre(**params):

liste1 = input("1. Sıranın Harflerini virgül koyarak yazın: ")
liste2 = input("2. Sıranın Harflerini virgül koyarak yazın: ")
liste3 = input("3. Sıranın Harflerini virgül koyarak yazın: ")
liste4 = input("4 Sıranın Harflerini virgül koyarak yazın: ")
liste5 = input("5. Sıranın Harflerini virgül koyarak yazın: ")

liste1 = liste1.split(",")
liste2 = liste2.split(",")
liste3 = liste3.split(",")
liste4 = liste4.split(",")
liste5 = liste5.split(",")



for i in liste1:
    for a in liste2:
        for b in liste3:
            for c in liste4:
                for d in liste5:
                    x = (i+a+b+c+d)
                    x = x.split()

                    for p in x:
                        p = p.split()
                        son = p.copy()
for eleman in son:
    if eleman in liste:
        print(eleman)

sifre()

Elemanı yazdırmıyor. Nerede hata yapıyorum acaba ?

Eğer birden fazla listedeki ortak elemanları bulmak istiyorsanız kümeleri (set) kullanmanız lazım:

>>> liste = [1, 2, 3]
>>> liste_2 = [2, 3, 4]
>>> liste_3 = [3, 4, 5]
>>> set(liste) & set(liste_2) & set(liste_3)
{3}
2 Beğeni

kümeleri kullanınca hallettim teşekkürler

y = [        "arşiv","avize","bakış","balık","beyaz",
         "binek","bitki","bıçak","büyük","ceviz",
         "çetin","çiçek","daima","deste","dokuz",
         "dosya","dünya","fetih","garip","kavun",
         "kitap","köpek","küçük","lamba","lisan",
         "magma","makas","meyva","nokta","salam",
         "siyah","tabii","venüs","yeşil","yirmi"

]

def sifre(**params):

harf_1 = input("1. Sıranın Harflerini virgül koyarak yazın: ")
harf_2 = input("2. Sıranın Harflerini virgül koyarak yazın: ")
harf_3 = input("3. Sıranın Harflerini virgül koyarak yazın: ")
harf_4 = input("4. Sıranın Harflerini virgül koyarak yazın: ")
harf_5 = input("5. Sıranın Harflerini virgül koyarak yazın: ")

harf_1 = harf_1.split(",")
harf_2 = harf_2.split(",")
harf_3 = harf_3.split(",")
harf_4 = harf_4.split(",")
harf_5 = harf_5.split(",")

x = []
for a in harf_1:
    for b in harf_2:
        for c in harf_3:
            for d in harf_4:
                for e in  harf_5:
                    x.append(a+b+c+d+e)

print(set(y) & set(x))

sifre()