Python, koşul sağlanırsa İlk for döngüsüne devam etsin

Selam arkadaşlar.

İç içe 5 tane for döngüm var ve bunlar olabilecek tüm kombinasyonları yapıp bir veri havuzu içerisinde arama yapıyorlar. Doğal olarak veri havuzunda hiç olmayan kombinasyonlarda ortaya çıkıyor ve bunlar çok fazla oluyor. Veri havuzunda 300.000 data var, Kombinasyonların sayısı 25 Milyon.

Sizden isteğim, eğer for döngüsü n kadar dönüp bir sonuca eşleşmiyorsa 1. for döngüsüne devam etsin istiyorum. Yada eşleşmeyen dataları çıkarmak istiyorum.

Şimdiden teşekkürler.

Oldukça karışık… :thinking:
Ama şöyle sanırım:

sayac = 0
for i in datas:
    sayac += 1 # Döngü her çalıştığında sayı 1 artıyor bu sayede ne kadar çalıştığını anlayabiliyoruz
    if sayac > 10:
        break #10 kez çalıştı ama bir sonuca varamadı ise döngüden çıkıyoruz

    if in == i:
       break #bir sonuca vardıysa çık

Bunu kendi programınıza uygulayabilirsiniz.

1 Beğeni

Örneğin;

sayac = 0
for i in datas:
    for i in datas2:
        sayac += 1
        if sayac > 10:
            break #bir üst döngüye çıkar
        if b ==in:
            exit() #Sonuç bulduysan kapat

Gibi…

1 Beğeni

Benzer bir mantık ama tam olarak şöyle olacaktı.

        for data1 in query1:
              for data2 in query2:
                  for data3 in query3:
                       for data4 in query4:
                            for data5 in query5:
                                for search_data in all_data:
                                    sayac += 1
                                    if sayac == 300000:
                                       #ilk for döngüsünden devam, gibi.
1 Beğeni

Yani burda ilk for döngüsünde ki data1, search_data’nın ilgili alanı ile eşleşmediği zaman mecbur diğer forların bitmesini bekliyor ve zaman kaybı oluyor. Bende eğer şu kadar dönmüş ve eşleşmemiş ise birinci forun bir sonraki değerine geçmesini istiyorum.

1 Beğeni

Hımm…
O zaman işler karışır ve fonksiyonlara bulaşırsınız. Bakın emin değilim, bilmiş olun.

def data1_arama(in):
    for i in data1:
        if in == i:
            return True
    return False

def data2_arama(in):
    for i in data2:
        if in == i:
            return True
    return False

def data3_arama(in):
    for i in data3:
        if in == i: return True;
    return False

while True:
    veri = input()
    if data1_arama(veri):
        print("bulundu")
        break
    elif data2_arama(veri):
        print("Bulundu"); break
    elif data3_arama(veri):
        print("bulundu"); break
    else:
        print("bulunamadı")

Neyse ben uyuyorum, iyi geceler :wink:

1 Beğeni

İyi geceler hocam, teşekkürler :grinning:

3’ten fazla döngüyü içiçe kullanmak hiç iyi bir uygulama değil. Hatta ikiyi bile geçmemeli, ideal durumda ise tek seviye olmalı. Mantıksal (boolean) değişkenler kullanarak istediğiniz seviyeye geçmeniz mümkün ancak bu, işleri çok karmaşıklaştıracaktır. Bunun yerine verileri düz hale getirerek (tek seviye bir liste ya da sözlük gibi) tek bir döngü ile işinizi halletmeniz daha iyi olacaktır. Bu olmuyorsa, farklı veri yapıları ya da desenleri düşünmenizin zamanı gelmiş demektir.

1 Beğeni