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
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.
…
Kümeleri kullan
…
Süper Çözüldü olarak işaretlemeyi unutma bu arada.
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))
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)
in sadece string ile kullanılır int ile değil hatası veriyor sayın ogretMAN
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
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.
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ı.
Evet, filter’li yöntemi anladım çok teşekkür ederim. Bir çok farklı yol var gerçekten.
Teşekkürler, program ile ilgili yaptığınız açıklamalar öğrenmek için çabaladığım Python için destek oluyor.