Ich habe einen wirklich verdichteten Codeabschnitt gefunden, der eine for-Schleife und eine if-Anweisung verwendet, um alle Zahlen innerhalb einer Zeichenfolge zu finden und sie zu einer Liste hinzuzufügen. Das Problem ist, dass ich nicht verstehe, warum es funktioniert.So erstellen Sie eine kondensierte For-Schleife innerhalb einer Liste
string = "h3110 23 cat 444.4 rabbit 11 2 dog"
alist = [int(s) for s in string.split() if s.isdigit()]
print (alist)
diese druckt ['23', '11', '2']
Es gibt zwei Bits ich nicht bekommen:
- Wie wird "s" in int (n) in Zeile 2 definiert ist, auch wenn es eingegeben wird vor der for-Schleife?
- Warum funktioniert dieser Code ohne else/return/pass/etc? Argument inplace für die if-Anweisung?
Dieser Code im Grunde macht folgendes:
alist = []
for s in string.split():
if s.isdigit():
alist.append(s)
else:
pass
print (alist)