Ich versuche, eine Reihe von Elementen in einer Liste zu paaren, um ein endgültiges Objekt zu erstellen, in einer Weise analog zu einer Summe von Objekten. Ich versuche, eine einfache Variante auf reduce
zu verwenden, wo Sie eine Liste von Paaren eher als eine flache Liste zu diesem Zweck betrachten. Ich möchte von etwas entlang der Linien tun:mit Python reduzieren über eine Liste von Paaren
nums = [1, 2, 3]
reduce(lambda x, y: x + y, nums)
außer ich zusätzliche Informationen zu der Summe hinzufügen möchten, die nums
in der Liste der Nummern für jedes Element spezifisch ist. Zum Beispiel für jedes Paar (a, b) in der Liste, die Summe als (a + b) ausgeführt wird:
nums = [(1, 0), (2, 5), (3, 10)]
reduce(lambda x, y: (x[0]+x[1]) + (y[0]+y[1]), nums)
Dies funktioniert nicht:
>>> reduce(lambda x, y: (x[0]+x[1]) + (y[0]+y[1]), nums)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 1, in <lambda>
TypeError: 'int' object is unsubscriptable
Warum funktioniert es nicht? Ich weiß, dass ich nums
als eine flache Liste kodieren kann - das ist nicht der Punkt - Ich möchte nur in der Lage sein, eine Reduce-Operation zu erstellen, die über eine Liste von Paaren oder über zwei Listen der gleichen Länge gleichzeitig und Pool-Informationen von iterieren kann beide Listen. Vielen Dank.
Wollen Sie das Ergebnis der Verringerung ein Tupel zu sein? –
Müssen Sie reduzieren? Ich bevorzuge die einfache Summe (x [0] + x [1] für x in Zahlen) – cerealy