Was macht dieser Code

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
bmh1980
gelöscht
Beiträge: 60
Registriert: Montag 26. Januar 2004, 17:13
Kontaktdaten:

Hallo.

Benutze schon einige Zeit Python und habe auch nur noch selten Probleme.

Ziemlich zu Anfang war jemand so freundlich und hat mir diesen Code als Lösung für ein Problem damals gegeben.

Code: Alles auswählen

for item in [x[0].split('/') [-1] for x in os.walk(directory) if 'foo' in x[1]]:
Er funktioniert ja auch wunderbar. Aber! Ich verstehe ihn nicht so ganz. :(

for item in [...] ist klar.

for x in os.walk(directory) ist klar.

if 'foo' in x[1] ist auch klar.

Aber beim Rest hört's auf. Okay, was x[0].split('/') bedeutet weiß ich auch.

Nur halt das ganze Zusammenspiel verstehe ich nicht wirklich. Ich weiß auch nicht, warum ich damals nicht nachgefragt habe, oder wo ich damals gefragt habe.

Na, wenigstens weiß ich noch, wofür ich das gebraucht habe. Wenigstens etwas, das ich weiß. ;)
digitus
User
Beiträge: 6
Registriert: Donnerstag 6. April 2006, 13:16

Das lange Ding ist ne List Comprehension. Kann man natürlich auch so machen:

Code: Alles auswählen

resList = []
for x in os.walk(directory):
    if 'foo' in x[1]:
        resList.append(x[0].split('/')[-1])
        
for item in resList:
    ...
Jetzt klarer?
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

bmh1980 hat geschrieben:Aber beim Rest hört's auf. Okay, was x[0].split('/') bedeutet weiß ich auch.
Das heißt dass das erste Element von x, welche in der for x-Schleife erstellt wird, an den Slashes in eine Liste gesplittet wird und diese Liste an das Ergebnis angehängt wird, aber nur wenn 'foo' in x[1]. Ists jetzt klarer?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
bmh1980
gelöscht
Beiträge: 60
Registriert: Montag 26. Januar 2004, 17:13
Kontaktdaten:

Okay, danke! :)

Erfordert zwar etwas umdenken, macht es dann aber einfacher, bzw den Code übersichtlicher.
Antworten