Bir fonksiyon yazdım ve fonksiyon for döngüsü ile iki kez işleyip, sonucunda [“1,A”] [“2,B”,“3,C”]… gibi bir çıktı alıyorum.
Yani fonksiyonu çağırdığımda
[“1,A”]
[“2,B”,“3,C”]…
Çıktısı geliyor. Benim isteğim, bu çıktının tek bir liste olarak birleştirilmesi, zira sonra yine for döngüsüne alacağım.(Arada virgül de yok)
For döngüsünü de yazabilir misin buraya? Döngüde değiştirilmesi gereken bir yer yoksa eğer sadece liste_1 + liste_2 gibi bir işlem yaparak iki listeyi birleştirebiliriz.
Başka bir bilgisayarda çalıştığım için atamadım. Şimdi atacağım fonksiyonu, bir saniye.
import itertools
def kumeleme(uye):
liste=[]
kume = "123ABC"
uyesayısı=uye
for i in itertools.product(kume, repeat=uyesayısı):
liste.append(list(i))
return (liste)
def toplamakume(uye):
strin=""
liste2=[]
x=kumeleme(uye)
for i in x:
liste2.append(strin.join(i))
print (liste2)
def kumebırlesmıs(n):
x=range(1,n+1)
for i in x:
toplamakume(i)
kumebırlesmıs(2)
Şimdi benim isteğim bu iki liste çıktısını tek liste olarak almak, zira bunu yaparsam, bu son listeyi de bir döngüde tek tek kullanmak istiyorum.
Yani çıktım şöyle olsun istiyorum:
['1', '2', '3', 'A', 'B', 'C', '11', '12', '13', '1A', '1B', '1C', '21', '22', '23', '2A', '2B', '2C', '31', '32', '33', '3A', '3B', '3C', 'A1', 'A2', 'A3', 'AA', 'AB', 'AC', 'B1', 'B2', 'B3', 'BA', 'BB', 'BC', 'C1', 'C2', 'C3', 'CA', 'CB', 'CC']
total_list = liste + liste2
bu şekilde yapabilirsin. Bu mevzuyu programına uyarlaman lazım sadece. def toplamakume(uye):
çalıştığı zaman içerisine ilk oluştuğu liste değişkenini alsın 2. listeyi oluşturduktan sonra ikisi bir toplasın.
nesne tabanlı (sınıflar-class) programlama yaparak bunu kolaylıkla yapabilirsin. Sınıflar hakkında bilgim yok diyorsan sanırım lambda
fonksiyonlarını bilmek gerekiyor.
onu da biliyom da, şimdilik sadece bu işleme ihtiyacım var. Çözen olursa makbule geçer.
for self.i in itertools.product(self.kume, repeat=self.uye_sayisi):
bu satırda
AttributeError: ‘’ object has no attribute ‘product’ on line 10 in main.py
hatayı alıyorum. Bilgin var mı?
tamamını nasıl kurdun bir bakayım. hata product metotunun attribude olarak yani nitelik olarak bulunmadığını söylüyor. Yani class sınıfında bir sınıf niteliği değil diyor. Ama tamamını yaz bir göreyim.
import itertools
class Application(object):
def __init__(self):
self.liste_1 = list()
self.kume = "123ABC"
self.uye_sayisi = 15
for self.i in itertools.product(self.kume, repeat=self.uye_sayisi):
self.liste_1.append(self.i)
print(self.liste_1)
app = Application()
Senin ürettiğin değişkeni kendim verdim bakalım çalışacak mı diye. Çalışmadı?_? Yanlış bir şeyler de yapmış olabilirim.
@Shanyu, galiba oldu.
Kod:
import itertools
class App:
def __init__(self, n):
result = []
x = range(1, n + 1)
for i in x:
result.append(self.top_kume(i))
print(result[0] + result[1])
def top_kume(self,n):
return ["".join(i) for i in self.kumeleme(n)]
def kumeleme(self,n):
liste = []
kume = "123ABC"
for i in itertools.product(kume, repeat=n):
liste.append(i)
return liste
App(2)
Çıktı:
['1', '2', '3', 'A', 'B', 'C', '11', '12', '13', '1A', '1B', '1C', '21', '22', '23', '2A', '2B', '2C', '31', '32', '33', '3A', '3B', '3C', 'A1', 'A2', 'A3', 'AA', 'AB', 'AC', 'B1', 'B2', 'B3', 'BA', 'BB', 'BC', 'C1', 'C2', 'C3', 'CA', 'CB', 'CC']
İstediğiniz bu muydu?
Yoksa Akıncı sen misin?
Akıncı kim?
Yanlız, şu kısımı, result[0] + result[1]
önce verdiğiniz koda eklemeyi denedim, iki listenin ilk iki karakterini döndürdü; sonra da @tevhidulvahset’in kodunu taslak olarak kullanıp sizin kodlarınızı yerleştirdim.
Şuan benim için sensin
Bir de, sakıncası yoksa, şunu merak ediyorum:
Bu kod ne işe yarıyor?
import itertools
from functools import reduce
def solution(kume, n):
return reduce(lambda l, r: l+r, (list(map("".join, itertools.product(kume, repeat=i))) for i in range(1, n+1)), [])
kume = "123ABC"
print(solution(kume, 2))
Müdavimlerin müdavimi Ekrem Dincel
Siz söyleyin bari, bu kodlar ne işe yarıyor?
parametrik uzayı veriyor, hem de tamamını
range(1, n+1)
aralığındaki değerleri tekrar etme sayısı olarak kullanıp kume
'nin bu uzunluktaki product
'larını tek bir listede birleştiriyor. Bir de bunları tuple
olarak değil str
olarak veriyor, map("".join, ...)
sayesinde.