Aus meiner Python-KonsoleDrucke mit Liste Verständnis
>>> numbers = [1,2,3]
>>> [print(x) for x in numbers]
1
2
3
[None, None, None]
Warum ist dieser Druck drei keiner am Ende ist?
Aus meiner Python-KonsoleDrucke mit Liste Verständnis
>>> numbers = [1,2,3]
>>> [print(x) for x in numbers]
1
2
3
[None, None, None]
Warum ist dieser Druck drei keiner am Ende ist?
Ein Listenverständnis ist nicht das richtige Werkzeug für die vorliegende Aufgabe. Es wird immer eine Liste zurückgeben und vorausgesetzt, dass print()
zu None
ausgewertet wird, wird die Liste mit Werten None
gefüllt. Eine einfache for
Schleife funktioniert besser, wenn wir eine Liste von Werten in der Erstellung, nur nicht daran interessiert sind, eine Funktion ohne Rückgabewert bei der Bewertung:
for x in numbers:
print(x)
print
ist eine Funktion in Python 3, die eine None
zurückgibt. Da Sie es dreimal aufrufen, erstellt es eine Liste von drei Elementen None
.
Die Funktion print
gibt None
zurück. Das Listenverständnis wendet die Funktion auf jedes Element der Liste an (Ausgabe der Ergebnisse), sammelt aber diese None
Objekte in das Ergebnis-Array. Der Python-Interpreter druckt dieses Array.
Sie Ihre Schleife neu strukturieren sollten Argumente print()
senden:
>>> numbers = [1,2,3]
>>> print(*(x for x in numbers), sep='\n')
Beachten Sie, dass Sie den expliziten Generator nicht benötigen. Genau die sich list
auspacken:
>>> numbers = [1,2,3]
>>> print(*x, sep='\n')
Druck eine Funktion ist, es ist wie
>>>def f(x):
...: pass
>>>[f(x) for x in numbers]
weil 'print()' ist eine Funktion in python3, die zurück 'None' –
Der Python-Interpreter immer druckt der Wert eines Ausdrucks, den Sie eingeben. Wenn Sie es in "r = [Druck (x) für x in Zahlen]" geändert haben, würden Sie sehen, dass "r" jetzt "[Keine, keine, keine]" enthält. –