Werfen Sie einen Blick auf das folgende Experiment:
>>> reduce(lambda(a,b),c: (a+[c],b) if c > 60 else (a,b + [c]), [49],([],[]))
([], [49])
>>> reduce(lambda(a,b),c: (a+[c],b) if c > 60 else (a,b + [c]), [49,58],([],[]))
([], [49, 58])
>>> reduce(lambda(a,b),c: (a+[c],b) if c > 60 else (a,b + [c]), [49,58,76],([],[]))
([76], [49, 58])
>>> reduce(lambda(a,b),c: (a+[c],b) if c > 60 else (a,b + [c]), [49,58,76,82],([],[]))
([76, 82], [49, 58])
>>> reduce(lambda(a,b),c: (a+[c],b) if c > 60 else (a,b + [c]), [49,58,76,82,88,90],([],[]))
([76, 82, 88, 90], [49, 58])
Funktion reduce
wie folgt beschrieben wird:
reduce(...)
reduce(function, sequence[, initial]) -> value
Apply a function of two arguments cumulatively to the items of a sequence,
from left to right, so as to reduce the sequence to a single value.
In unserem Beispiel ist Funktion eine Lambda-Funktion mit dem ersten Argument als 2-Element Tupel (a,b)
und zweites Argument als eine ganze Zahl c
aus der Liste für die Verarbeitung abgeholt. Da function ein 2-Element-Tupel von Listen erzeugt, wird es als ([], [])
initialisiert. Wenn bei der Verarbeitung das Element> 60 ist, wird es zur ersten Liste des Tupels hinzugefügt; Andernfalls wird es der zweiten Liste des Tupels hinzugefügt.
Die Syntax a+[c]
ist wirklich die extend
Syntax einer Liste. Wir können nicht tun a+c
seit a
ist eine Liste und c
ist eine ganze Zahl. Ebenso für b+[c]
Python3: 'reduzieren (Lambda a, c: (a [0] + [c], a [1]) wenn c> 60 sonst (a [0], a [1] + [c ]), [49, 58, 76, 82, 88, 90], ([], [])) ' –
@arvindpdmn Vielen Dank! –