'For' Döngüsü İçerisinde 'For' Döngüsü Kullanmak

Merhabalar, for döngüsü ile alakalı kafama bir şey takıldı. Kendimi küçük bir kod parçacığı ile ifade etmek istiyorum:

for i in ["a:1", "b:1", "c:1"]:
	print(i)
	for x in ["a:2", "b:2", "c:2"]:
		print(x)
Output:
       a:1
       a:2
       b:2
       c:2
       b:1
       a:2
       b:2
       c:2
       c:1
       a:2
       b:2
       c:2

Bu kodların şu çıktıyı vermesi gerekmiyor mu:

       a:1
       a:2
       b:1
       b:2
       c:1
       c:2

Merhaba,

Hayır, iç içe 2 for döngüsü kullanırsanız, for döngüsüyle taradığınız listelerin uzunluklarının çarpımı kadar işlem gerçekleşir. İlk listenin uzunluğu 3, ikinci listenin uzunluğu da 3. 3 * 3 = 9. Dolayısıyla, içteki for döngüsü altındaki print(x) ifadesi 9 kere çağrılacak. Bir de dıştaki for döngüsünden ötürü print(i) fonksiyonu 3 kere çağrılacak. Yani toplamda print fonksiyonu 12 kere çalışacak.

satir_sayisi = 3
sutun_sayisi = 3

for satir in range(satir_sayisi):
    for sutun in range(sutun_sayisi):
        print(f"Satır: {satir}, Sütun: {sutun}")

İstediğiniz çıktıyı almak için şöyle yapabilirsiniz.

for i in ["a", "b", "c"]:
    for x in range(1, 3):
        print(f"{i}: {x}")

Detaylı bilgi verdiğiniz için teşekkür ederim. Şuan bir proje üzerinde çalışıyorum, internetten çektiğim bir takım veriler var. Bu verileri, başlık, açıklama, indirim_kdv, fiyat şeklinde 4 adet listede tutuyorum. Şimdi bu bilgilerin tamamını bir listeye aktarmam gerek ama sıralı bir şekilde.
İç içe 2 for döngüsü kullanınca şu listeyi elde etmiş oluyorum:

 METOD DEFTER
X FIRMASI 40 YP - 40060020011
5,00 + % 8 KDV
5,40
7,50 + % 8 KDV
8,10
2,25 + % 8 KDV
2,43
1,25 + % 8 KDV
1,35
1,47 + % 8 KDV
1,59
1,05 + % 8 KDV
1,13
3,60 + % 8 KDV
3,89
2,10 + % 8 KDV
2,27
1,55 + % 8 KDV
1,67
1,10 + % 8 KDV
1,19
2,50 + % 8 KDV
2,70
2,50 + % 8 KDV
2,70
3,15 + % 8 KDV
3,40
2,25 + % 8 KDV
2,43
8,00 + % 8 KDV
8,64
7,50 + % 8 KDV
8,10
5,00 + % 8 KDV
5,40
4,13 + % 18 KDV
4,87
10,68 + % 8 KDV
11,53
9,99 + % 8 KDV
10,79
8,61 + % 8 KDV
9,30
7,58 + % 8 KDV
8,19
0,98 + % 8 KDV
1,06
1,88 + % 8 KDV
2,03
26,95 + % 18 KDV
31,80
26,95 + % 18 KDV
31,80
26,75 + % 18 KDV
31,57
26,75 + % 18 KDV
31,57
21,80 + % 18 KDV
25,72
7,59 + % 18 KDV
8,96
9,00 + % 18 KDV
10,62
18,34 + % 18 KDV
21,64
23,00 + % 18 KDV
27,14
 METOD DEFTER
Y FIRMASI 40 YP - 8690830340081
5,00 + % 8 KDV
5,40
7,50 + % 8 KDV
8,10
2,25 + % 8 KDV
2,43
1,25 + % 8 KDV
1,35
1,47 + % 8 KDV
1,59
1,05 + % 8 KDV
1,13
3,60 + % 8 KDV
3,89
2,10 + % 8 KDV
2,27
1,55 + % 8 KDV
1,67
1,10 + % 8 KDV
1,19
2,50 + % 8 KDV
2,70
2,50 + % 8 KDV
2,70
3,15 + % 8 KDV
3,40
2,25 + % 8 KDV
2,43
8,00 + % 8 KDV
8,64
7,50 + % 8 KDV
8,10
5,00 + % 8 KDV
5,40
4,13 + % 18 KDV
4,87
10,68 + % 8 KDV
11,53
9,99 + % 8 KDV
10,79
8,61 + % 8 KDV
9,30
7,58 + % 8 KDV
8,19
0,98 + % 8 KDV
1,06
1,88 + % 8 KDV
2,03
26,95 + % 18 KDV
31,80
26,95 + % 18 KDV
31,80
26,75 + % 18 KDV
31,57
26,75 + % 18 KDV
31,57
21,80 + % 18 KDV
25,72
7,59 + % 18 KDV
8,96
9,00 + % 18 KDV
10,62
18,34 + % 18 KDV
21,64
23,00 + % 18 KDV
27,14
 METOD DEFTER
Z FIRMASI 40 YP - 8690830330037
... şeklinde devam ediyor.

Benim istediğim ise şöyle:

 METOD DEFTER
X FIRMASI 40 YP - 40060020011
5,00 + % 8 KDV
5,40
 METOD DEFTER
Y FIRMASI 40 YP - 40060020011
7,50 + % 8 KDV
8,10
Z FIRMASI 40 YP - 40060020011
1,25 + % 8 KDV
1,35

İnternetten çektiğiniz verileri görmeden bir şey diyemem.

En kısa zamanda paylaşmaya çalışacağım.

Gerçek veriler değil ama çok benzer şekilde ayarladım herşeyi.

urun_basligi = ["Defter 1", "Defter 2", "Defter 3", "Defter 4", "Defter 5", "Defter 6", "Defter 7", "Defter 8", "Defter 9", "Defter 10"]

urun_aciklamasi = ["Firma 1", "Firma 2", "Firma 3", "Firma 4", "Firma 5", "Firma 6", "Firma 7", "Firma 8", "Firma 9", "Firma 10"]

indirim_kdv = ["5,00 + % 8 KDV", "7,00 + % 8 KDV", "10,00 + % 8 KDV", "8,00 + % 8 KDV", "3,00 + % 8 KDV", "13,00 + % 8 KDV", "22,00 + % 8 KDV", "13,00 + % 8 KDV", "57,00 + % 8 KDV", "75,00 + % 8 KDV"]

urun_fiyati =  ["25.0", "34.50", "47.99", "13", "54.0", "43.50", "119.99", "104.99", "75.0", "89.99"]

urunler = []

for baslik, aciklama in zip(urun_basligi, urun_aciklamasi):
	urunler.append(baslik)
	urunler.append(aciklama)
	for indirimKdv, fiyat in zip(indirim_kdv, urun_fiyati):
		urunler.append(indirimKdv)
		urunler.append(fiyat)

for x in urunler:
	print(x)

Output:
Defter 1
Firma 1
5,00 + % 8 KDV
25.0
7,00 + % 8 KDV
34.50
10,00 + % 8 KDV
47.99
8,00 + % 8 KDV
13
3,00 + % 8 KDV
54.0
13,00 + % 8 KDV
43.50
22,00 + % 8 KDV
119.99
13,00 + % 8 KDV
104.99
57,00 + % 8 KDV
75.0
75,00 + % 8 KDV
89.99
Defter 2
Firma 2
5,00 + % 8 KDV
25.0
7,00 + % 8 KDV
34.50
10,00 + % 8 KDV
47.99
8,00 + % 8 KDV
13
3,00 + % 8 KDV
54.0
13,00 + % 8 KDV
43.50
22,00 + % 8 KDV
119.99
13,00 + % 8 KDV
104.99
57,00 + % 8 KDV
75.0
75,00 + % 8 KDV
89.99
Defter 3
Firma 3
5,00 + % 8 KDV
25.0
7,00 + % 8 KDV
34.50
10,00 + % 8 KDV
47.99
8,00 + % 8 KDV
13
3,00 + % 8 KDV
54.0
13,00 + % 8 KDV
43.50
22,00 + % 8 KDV
119.99
13,00 + % 8 KDV
104.99
57,00 + % 8 KDV
75.0
75,00 + % 8 KDV
89.99
Defter 4
Firma 4
5,00 + % 8 KDV
25.0
7,00 + % 8 KDV
34.50
10,00 + % 8 KDV
47.99
8,00 + % 8 KDV
13
3,00 + % 8 KDV
54.0
13,00 + % 8 KDV
43.50
22,00 + % 8 KDV
119.99
13,00 + % 8 KDV
104.99
57,00 + % 8 KDV
75.0
75,00 + % 8 KDV
89.99
Defter 5
Firma 5
5,00 + % 8 KDV
25.0
7,00 + % 8 KDV
34.50
10,00 + % 8 KDV
47.99
8,00 + % 8 KDV
13
3,00 + % 8 KDV
54.0
13,00 + % 8 KDV
43.50
22,00 + % 8 KDV
119.99
13,00 + % 8 KDV
104.99
57,00 + % 8 KDV
75.0
75,00 + % 8 KDV
89.99
Defter 6
Firma 6
5,00 + % 8 KDV
25.0
7,00 + % 8 KDV
34.50
10,00 + % 8 KDV
47.99
8,00 + % 8 KDV
13
3,00 + % 8 KDV
54.0
13,00 + % 8 KDV
43.50
22,00 + % 8 KDV
119.99
13,00 + % 8 KDV
104.99
57,00 + % 8 KDV
75.0
75,00 + % 8 KDV
89.99
Defter 7
Firma 7
5,00 + % 8 KDV
25.0
7,00 + % 8 KDV
34.50
10,00 + % 8 KDV
47.99
8,00 + % 8 KDV
13
3,00 + % 8 KDV
54.0
13,00 + % 8 KDV
43.50
22,00 + % 8 KDV
119.99
13,00 + % 8 KDV
104.99
57,00 + % 8 KDV
75.0
75,00 + % 8 KDV
89.99
Defter 8
Firma 8
5,00 + % 8 KDV
25.0
7,00 + % 8 KDV
34.50
10,00 + % 8 KDV
47.99
8,00 + % 8 KDV
13
3,00 + % 8 KDV
54.0
13,00 + % 8 KDV
43.50
22,00 + % 8 KDV
119.99
13,00 + % 8 KDV
104.99
57,00 + % 8 KDV
75.0
75,00 + % 8 KDV
89.99
Defter 9
Firma 9
5,00 + % 8 KDV
25.0
7,00 + % 8 KDV
34.50
10,00 + % 8 KDV
47.99
8,00 + % 8 KDV
13
3,00 + % 8 KDV
54.0
13,00 + % 8 KDV
43.50
22,00 + % 8 KDV
119.99
13,00 + % 8 KDV
104.99
57,00 + % 8 KDV
75.0
75,00 + % 8 KDV
89.99
Defter 10
Firma 10
5,00 + % 8 KDV
25.0
7,00 + % 8 KDV
34.50
10,00 + % 8 KDV
47.99
8,00 + % 8 KDV
13
3,00 + % 8 KDV
54.0
13,00 + % 8 KDV
43.50
22,00 + % 8 KDV
119.99
13,00 + % 8 KDV
104.99
57,00 + % 8 KDV
75.0
75,00 + % 8 KDV
89.99

Bu çıktıyı alıyorum. 2. döngüde hiç durmadan o listeyi tüketiyor. Beklediğim çıktı ise şu idi:

Defter 1
Firma 1
5,00 + % 8 KDV
25.0
Defter 2
Firma 2
7,00 + % 8 KDV
34.50
Defter 3
Firma 3
10,00 + % 8 KDV
47.99

Bu listeyi nasıl elde edebilirim acaba?

Tek bir for döngüsü işinizi görür:

for i in range(len(urun_basligi)):
    print(
        f"{urun_basligi[i]}\n"
        f"{urun_aciklamasi[i]}\n"
        f"{indirim_kdv[i]}\n"
        f"{urun_fiyati[i]}\n"    
    )

veya şöyle:

for i, j, k, m in zip(
        urun_basligi, urun_aciklamasi, indirim_kdv, urun_fiyati
):
    print(f"{i}\n{j}\n{k}\n{m}\n")

Her iki kodun ekrana yazdıracağı yazı aşağıdaki gibi olur.

Çıktı:

Defter 1
Firma 1
5,00 + % 8 KDV
25.0

Defter 2
Firma 2
7,00 + % 8 KDV
34.50

Defter 3
Firma 3
10,00 + % 8 KDV
47.99

Defter 4
Firma 4
8,00 + % 8 KDV
13

Defter 5
Firma 5
3,00 + % 8 KDV
54.0

Defter 6
Firma 6
13,00 + % 8 KDV
43.50

Defter 7
Firma 7
22,00 + % 8 KDV
119.99

Defter 8
Firma 8
13,00 + % 8 KDV
104.99

Defter 9
Firma 9
57,00 + % 8 KDV
75.0

Defter 10
Firma 10
75,00 + % 8 KDV
89.99

Listeyi de şöyle oluşturabilirsiniz:

urunler = [
    [urun_basligi[i], urun_aciklamasi[i], indirim_kdv[i], urun_fiyati[i]]
    for i in range(len(urun_basligi))
]

veya şöyle:

urunler = [
    [i, j, k, m]
    for i, j, k, m in zip(
        urun_basligi, urun_aciklamasi, indirim_kdv, urun_fiyati
    )
]
2 Beğeni

Bugün gerçekten çok yeni bilgiler edindim. Özellikle de iç içe for döngüsü kullanmak ile ilgili. Herşey için çok teşekkür ederim :pray::pray:

Rica ederim, sağlıklı günler.

Hocam siz karşılaştırmayı seviyorsunuz bu iki kod arasında hangisi hızlı :rofl:

Aralarında çok bir zaman farkı yok. :slight_smile:

1 Beğeni