• 24-01-2023, 13:20:52
    #1
    Python öğrenmeye çalışıyorum. Muhtemelen çok basit bir soruda takıldım. Günlerdir uğraşıyorum ama çözemedim. Acaba konu hakkında bilgisi olan biri yardımcı olabilir mi?

    Soru şu;
    a = [1, 5, 6]
    b = [0, 2, 7]
    c = sirali_birlestir(a, b)
    print(c)
    # [0, 1, 2, 5, 6, 7] yazmalı ama hangi kodlarla? Listeyi önce birleştirip sıralamak dışında bir çözüm arıyorum. Bir ondan bir ondan seçim yapacak şekilde.
  • 24-01-2023, 13:23:01
    #2
    Üyeliği durduruldu
    >>> a = [1, 5, 6]
    >>> b = [0, 2, 7]
    >>> c = a+b
    >>> c.sort()
    >>> print(c)
    [0, 1, 2, 5, 6, 7]
    İki listeyi "+" operatörü ile birleştirip .sort() methodu ile sıralayabilirsiniz.
  • 24-01-2023, 13:25:22
    #3
    Bunu biliyorum. Özellikle birleştirme yapmadan diye özellikle belirtmiştim. Yine de teşekkürler
  • 24-01-2023, 13:27:47
    #4
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Bu problemi çözmek için Python'da "heapq" kütüphanesini kullanabilirsiniz. "heapq.merge()" fonksiyonu, iki veya daha fazla sıralı iterable'i birleştirir ve sıralı bir iterable olarak geri döndürür. Aşağıdaki örnekte gösterildiği gibi kullanabilirsiniz:


    import heapq

    a = [1, 5, 6]
    b = [0, 2, 7]
    c = list(heapq.merge(a, b))
    print(c)
    # [0, 1, 2, 5, 6, 7]
  • 24-01-2023, 13:30:22
    #5
    Üyeliği durduruldu
    seherylmz adlı üyeden alıntı: mesajı görüntüle
    Bunu biliyorum. Özellikle birleştirme yapmadan diye özellikle belirtmiştim. Yine de teşekkürler
    "birleştirmeden" yapmak istiyorsanız eğer, iki liste elemanlarını da bir sözlüğe kaydedin (sözlüğe kaydetme nedeniniz, key'in value'sunda hangi listeye ait olduğunu görmek) ve sıralama algoritmalarından biri ile sıralama yapın. aklıma bu geldi sadece.
  • 24-01-2023, 17:20:09
    #6
    Algoritma mantığını öğrenmek istiyorum. O yüzden bahsettiğiniz yöntemleri kullanmadan algoritma kurarak nasıl yapabilirim demek için buraya yazdım. Onlarca kaynak okudum ama farklı listelerden seçim yapıp sıralı tek liste haline getiren bir çözüm bulamadım. Yardımlarınız için tekrar teşekkür ederim.
  • 24-01-2023, 18:05:07
    #7
    seherylmz adlı üyeden alıntı: mesajı görüntüle
    Algoritma mantığını öğrenmek istiyorum. O yüzden bahsettiğiniz yöntemleri kullanmadan algoritma kurarak nasıl yapabilirim demek için buraya yazdım. Onlarca kaynak okudum ama farklı listelerden seçim yapıp sıralı tek liste haline getiren bir çözüm bulamadım. Yardımlarınız için tekrar teşekkür ederim.
    birleştirme yapmadan 3. bir liste oluşturup append ile ekleyip yeni listeni sort yapabilirsin

    a = [1, 5, 6]
    b = [0, 2, 7]
    
    c = list()
    
    for x in a:
        c.append(x)
        
    for y in b:
        c.append(y)
        
    c.sort()
    print(c)
    ama diyorsan sort da kullanılmayacak o zaman önce listeyi kontrol edip mevcut değerin büyük küçük olma haline göre yerine koymalısın saçma ama belki yardımcı olur diye onu da ekledim aşağıya

    a = [1, 5, 6]
    b = [0, 2, 7]
    
    c = list()
    
    for x in a:
        c.append(x)
        
    for y in b:
        c.append(y)
          
    for z in range(len(c)):
        for v in range(z + 1, len(c)):
    
            if c[z] > c[v]:
               c[z], c[v] = c[v], c[z]
              
    print(c)
  • 24-01-2023, 20:24:00
    #8
    Çok teşekkür ederim. Aradığım çözüm buydu. Çok sağolun, vaktinizi aldım.