Es gibt kein Äquivalent zu Javas Imperativ Iterable.forEach
oder Stream.forEach
Methode. Es gibt eine map
Funktion, analog zu Javas Stream.map
, aber es ist für das Anwenden von Transformationen auf ein iterables. Wie Java's Stream.map
, wendet es die Funktion nicht wirklich an, bis Sie eine Terminal-Operation für den Rückgabewert ausführen.
Sie könnten map
missbrauchen den Job von forEach
zu tun:
list(map(print, iterable))
aber es ist eine schlechte Idee, Nebenwirkungen von einer Funktion erzeugen, die nicht und den Aufbau einer riesigen Liste haben, sollten Sie nicht brauchen, . Es wäre wie
someList.stream().map(x -> {System.out.println(x); return x;}).collect(Collectors.toList())
in Java zu tun.
Der Standard-Weg, dies in Python zu tun, eine Schleife wäre:
for thing in iterable:
print(thing)
Aber warum dies: a = {1, 2, 3} Karte (lambda x: print (x), a) - wird nichts gedruckt? –
Siehe diese SO Frage: http://stackoverflow.com/questions/7731213/print-doesnt-print-when-its-in-map-python Ich hoffe, es beantwortet Ihre Frage :) – Brian
@Don_Quijote Karte gibt eine neue zurück Liste mit der gleichen Anzahl von Elementen wie die ursprüngliche Liste. Die Druckfunktion gibt jedoch nichts zurück. Daher ist es nicht möglich, diese neue Liste zu erstellen. – Matthias