Seite 1 von 1

Was macht dieser Code

Verfasst: Mittwoch 26. April 2006, 12:15
von bmh1980
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ß. ;)

Verfasst: Mittwoch 26. April 2006, 12:29
von digitus
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?

Re: Was macht dieser Code

Verfasst: Mittwoch 26. April 2006, 14:42
von Leonidas
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?

Verfasst: Samstag 29. April 2006, 09:15
von bmh1980
Okay, danke! :)

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