Nested List Sorusu

Merhabalar. aşağıdaki şekilde bir txt dosyam var ve ben bu dosyayı listeye aktardım. daha sonra kodun devamında [2,7], [13,11,12,4,2,3,6,15,7] de hangi sıra ile bulunuyor. Yani output 2,3,6,15,7 olacak. Bu işlemi tüm listede aynı anda yapmak için bir for döngüsüne soktum. Ama txt dosyasını listeye aktardığım için iç içe liste oluyor bu durumda for t döngüsünü nasıl yerleştirebilirim.

a_file = open("aktarmasizlar.txt", "r")

list_of_lists = []
for line in a_file:
  stripped_line = line.strip()
  line_list = stripped_line.split()
  list_of_lists.append(line_list)

a_file.close()

for t in range(0,len(list_of_lists)):    
    def find_numbers_in_interval(list_of_lists):
        if list_of_lists[0]:
            start = list_of_lists[1].index(list_of_lists[0][0])
            end = list_of_lists[1].index(list_of_lists[0][1]) + 1
            return list_of_lists[1][start: end]
        

    print(find_numbers_in_interval(list_of_lists))

Kodu deneyemedim ancak 2. Döngü yerine şunu kullanırsanız çözülecektir:

for liste in list_of_lists:
    uzunluk = len(liste)
    if uzunluk==2:
        pass
    else:
        print(*liste[uzunluk-6:uzunluk-1])

For döngüsünde sayı almak yerine liste aldım. Aldığım listenin uzunluğu 2 ise geçtim. Daha uzunsa son 5 ögeyi -* kullanarak ayırdım ve- yazdırdım.

Benim sorum bu son 5 öge nasıl daha kolay seçilebilir?

Ama bu benim istediğim şey vermiyor. Sizin kodunuzda son 5 rakamı veriyor her zaman. Ama benim yapmaya çalıştığım şu [4, 8], [1, 2, 5, 4, 6, 8, 10, 14, 13] mesela bu ikisi arasındaki bir kıyaslamada output olarak 4,6,8 vermesi gerek

Kodu yine deneyemedim.

for liste in list_of_lists:
    if len(liste)==2: 
        ilk_sayı=liste[0]
        son_sayı=liste[1]
    else: 
        print(*liste[liste.index(ilk_sayı):liste.index(son_sayı)+1]) 

Eğer listenin uzunluğu 2 ise bunları bir değişkene atıyor, değilse daha önceki listeden aldığı sayıları bulup arasındakileri seçiyor.

Yok olmuyor istediğim ne istediğimi mi tam anlatamadım acaba. Aslında benim baştaki kodum doğru sadece büyük döngüye sokamıyorum

Yukarıdaki kodu test edip düzenledim. Sadece “+1” gerekiyormuş. Bunu bulamamanız biraz ilginç doğrusu.

Tabikide +1 yazdım ve denedim ama istediğim sonucu vermiyor. Sizin yazıp aldığınız sonuç tam olarak nedir ki?

Merhaba,

Ben yukarıdaki çözümü kafamdaki list_of_lists değişkenine göre yaptım. Ancak sizin bana verdiğiniz değişkene dikkat etmedim. Kafamda şöyle bir yapı vardı:

list_of_lists = [[2,7], [13,11,12,4,2,3,6,15,7],
                 [4, 8], [1, 2, 5, 4, 6, 8, 10, 14, 13]]

Yukarıdaki kodu hazırlayınca değişkenin yapısını da değiştireyim dedim. İlk döngüyü de tekrar yazdım:

a_file = open("aktarmasizlar.txt", "r") 
list_of_lists = [] 
for line in a_file:
    # Satırdaki parantez ve boşluklardan kurtulalım
    clean_line = line.replace("[", '').replace("]", '').replace(" ", "")
    # İfademizi virgüllere göre ayırıp listeye dönüştürelim
    str_list = clean_line.split(",")
    # str tipindeki elemanları int tipine dönüştürelim
    int_list = [int(x) for x in str_list]
    # ilk 2 ifadeyi bir liste sonrasını ayrı bir liste olarak ekleyelim
    list_of_lists.append(int_list[:2])
    list_of_lists.append(int_list[2:])

Çalışmayan bir yer varsa yine yardımcı olmayı denerim

Teşekkür ederim ben başka bir şekildr hallettim

1 Beğeni