Python Liste Mükerrer Sayıları Silmek

Selamlar,

s1 listesindeki benzer (mükerrer) sayıların gelmesini nasıl engellerim ?

s1 = [2,3,4,5,2,4,6,7,8,6]

istenilen sonuc

2,3,4,5,6,7,8

1-9 arası rakam listesi oluştur listenin içerisindeki her bir rakamı s1 deki ile karşılaştır kodunu istersen yazarım.

For döngüsü kurup index ile her döngü deki numarayı s1de aratabilirsin varsa silersin. Yöntem çok.

1 Beğeni


Kümeleri kullan

2 Beğeni

buldum çözüm union methodu ile filtreledim


Süper :slightly_smiling_face: Çözüldü olarak işaretlemeyi unutma bu arada.

1 Beğeni

Union methodu iki setin birlesimini (terimden emin degilim; ∪ veya U islemi) alir. Seti kendisiyle birlestirmenin bir manasi yok; seti olusturman yetiyor zaten:

set(xs) veya list(set(xs))

1 Beğeni

a = ['1, 5, 10, 22, 23, 55']
b = ['2, 5, 8, 22, 55, 67, 99']

fark =""
for s in a:
	if s in b:
		if not s in fark:
			fark += s
print(fark)

a ve b listelerini karşılaştırarak aynı olanları karşılaştırmak istiyorum ama yapamadım. a ve b iki farklı dosyadan readline() ile geliyor. Yani listenin yapısı aynen yukarıdaki gibi. len(a) ile veya len(b) ile dönen değer 1
Bu konuda yardımcı olur musunuz?

a = [1, 5, 10, 22, 23, 55]
b = [2, 5, 8, 22, 55, 67, 99]

Bu şekilde dener misiniz

Önce listeleri düzenlemeniz lazım.

a = ['1, 5, 10, 22, 23, 55']
b = ['2, 5, 8, 22, 55, 67, 99']

f = lambda arg: [i.split(", ") for i in arg][0]

a = f(a)
b = f(b)

fark = ""
for s in a:
    if s in b:
        if not s in fark:
            fark += s
print(fark)
1 Beğeni

in sadece string ile kullanılır int ile değil hatası veriyor sayın ogretMAN

1 Beğeni

Sayın dildeolupbiten teşekkürler. Yeni yeni öğrenmeye başladım. Şimdi eklediğiniz kodu anlamaya çalışayım

Hocam kodlarınızı inceledim, liste ve sözlük üreteçleri konularına sıkı çalışmak lazım. Kodlarınız gerçekten çok pratik. Başka yoldan nasıl yapabilirim diye düşündüm, aşağıdaki gibi yapabildim. Tabi sizinkinin yanında pek de göze hitap etmiyor. Kendimi geliştirmem açısından iyi oldu.

a = ['1, 5, 10, 22, 23, 55']
b = ['2, 5, 8, 22, 55, 67, 99']

def liste_yap(prm):
    metin = ""
    liste = []
    yeni = prm[0].replace(', ',',')
    
    for i in yeni:
        if i != ',':
            metin += i
        else:
            liste.append(metin)
            metin = ""
    
    liste.append(yeni[::-1][:2])
    return liste

k = lambda x, y: [i for i in x if i in y]

k(liste_yap(a),liste_yap(b))

Son güncellemem :smiley:

1 Beğeni

Estafurullah @Muallim kardeşim. Aslında buradaki olay stringi, listeye, listeyi de stringe çevirme yöntemi. join() bir liste metodu, split() ise bir string metodu.

a = ['1, 5, 10, 22, 23, 55']
#1. aşama: a stringe dönüştü. Listeden kurtulduk.
a = "".join(a)
# 2. aşama: a stringi ", " kısmından ayrıldı ve tekrar listeye dönüştürüldü.
a = a1.split(", ")
# Bu iki işi tek bir satırda şöyle yazarız.
a = "".join(a).split(", ")
print(a)

Lambda ise bir fonksiyon tanımlama çeşidi:

fonksiyon = lambda arguman: "".join(arguman).split(", ")
a = ['1, 5, 10, 22, 23, 55']
b = ['2, 5, 8, 22, 55, 67, 99']
a = fonksiyon(a)
b = fonksiyon(b)

Yani hazırda bir fonksiyonumuz bulunsun, benzer bütün işlemlerde o fonksiyonu çağıralım diye fonksiyon kullandım.

Bu örnekte bir önceki mesajdan kullanılan liste üreteci yönteminden daha farklı bir yöntem izlemiş olduk.

Önemli olan burada, nasıl bir veri tipiyle karşı karşıyayız. Bu veri tipinin metotları neler, hangi metot ne işe yarar, bunları bilmek veya öğrenmek işimizi kolaylaştırır.

Mesela bilmediğimiz veya ilk defa karşılaştığımız modülleri, sınıfları, fonksiyonları, dir() ve help() fonksiyonunlarını kullanarak öğrenebiliriz.

Merakınız olduğu müddetçe ve araştırmayı bırakmazsanız eminim siz de zaman içerisinde şu anki seviyenizden daha ileri bir seviyeye geleceksiniz, bu kaçınılmaz.

Bu arada madem lambda fonksiyonlarını kullanmaya geçtiniz, şu aşağıdaki kodu bir inceleyin isterseniz. :slight_smile:

k = lambda x, y: list(filter(lambda i: i in y, x))

Sizin yazdığınız k = lambda x, y: [i for i in x if i in y] fonksiyonuyla aynı işlemi yapar bu fonksiyon. Fonksiyonel programlama yöntemi diyorlar buna. Sağolsun @aib kardeşimizin lambda fonksiyonlarını sık kullanması benim de bu konuya ilgi duymamı sağlamıştı.

2 Beğeni

Evet, filter’li yöntemi anladım çok teşekkür ederim. Bir çok farklı yol var gerçekten.

1 Beğeni

Teşekkürler, program ile ilgili yaptığınız açıklamalar öğrenmek için çabaladığım Python için destek oluyor.

1 Beğeni