For ile alınmış iki liste çıktısını birleştirme

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.

1 Beğeni

@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?

1 Beğeni

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.

2 Beğeni

Şuan benim için sensin :smiley:

1 Beğeni

Bir de, sakıncası yoksa, şunu merak ediyorum:
Bu kod ne işe yarıyor?

1 Beğeni
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))
2 Beğeni

Müdavimlerin müdavimi Ekrem Dincel

Siz söyleyin bari, bu kodlar ne işe yarıyor?

parametrik uzayı veriyor, hem de tamamını :slight_smile:

1 Beğeni

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.

1 Beğeni

Bu bir ödev değil, sadece merak ve programlama çabası.

Ödev olunca ne değişiyor ki? Öğretmen o kodun ne olduğunu anlat dediği ve cevap alamadığı zaman hazır kod olduğunu anlıyor zaten. Burada da ne olduğunu açıklayınca arada bir fark kalmıyor. Amacımız insanlara bir şey öğretebilmek.

4 Beğeni

Gencay geldiğine göre hepiniz dağılabilirsiniz.