Wie löse ich diesen Python-Loop am besten?

2 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

Dafür gibt es itertools:

from itertools import dropwhile

for x in dropwhile(lambda k: k["key"]!=10, my_list):
    print("Tue etwas mit", x)

Nic0LP 
Beitragsersteller
 04.01.2023, 13:59

Perfekt, danke!

0

So...?

for x in my_list:
    if x["key"] == 10:
        break
Woher ich das weiß:Studium / Ausbildung – Informatikstudent

Nic0LP 
Beitragsersteller
 04.01.2023, 12:57

Ich muss mit den Listenelementen dann noch was machen (was ich hier mit "print('Tue etwas')" abgekürzt hatte

0
whgoffline  04.01.2023, 13:41
@Nic0LP

Dann machst du das einfach vor dem break im if-Block...?

0
Nic0LP 
Beitragsersteller
 04.01.2023, 13:58
@whgoffline

Dann würde das aber nur mit dem einen passieren. Alle Elemente ab x["key"] == 10 müssen "weiterverarbeitet" werden. Wenn ich beim ersten schon ein break setze, passiert das ja nicht

0
whgoffline  04.01.2023, 14:25
@Nic0LP

Dann verstehe ich wohl noch nicht ganz was dein Programm machen soll...

Was soll denn z.B. mit allen Listenelementen bei folgender List gemacht werden?

list = [o1,o2,o3,o4,x5,x6,x7]
#Alle die mit x beginnen haben an der Stelle "key" 10 stehen
0
Nic0LP 
Beitragsersteller
 04.01.2023, 14:36
@whgoffline

Die Lösung von ralphdieter funktioniert, da wird deutlicher, was ich gemeint habe - mit den Objekten x5, x6, x7 werden weitere Abfragen (mit anderen Keys) gemacht und je nach dem verschiedenes ausgeführt. Ich wollte mir aber die redundante Abfrage für x6 und x7 sparen, ob x["key"] == 10 ist

0