Hallo,
noch eine kurze Frage: ich habe eine Liste wie die folgende:
[(7, 137, 35), (7, 134, 31), (7, 141, 31), (7, 139, 37), (7, 142, 33), (7, 137, 37), (7, 144, 37), (7, 143, 37), (6, 143, 38), (6, 143, 33), (6, 143, 38), (7, 150, 37), (6, 143, 37), (8, 144, 41), (2, 143, 38), (5, 147, 38), (7, 146, 37), (8, 152, 37), (6, 151, 40)]
...und möchte nun daraus ein Tupel machen, in dem jeweils die Summen stehen, also (7+7+7+7+..., 137+134+141+139..., 35+31+31+37+...).
Weil ich das in meinem Programm ziemlich oft machen muss bräuchte ich eine schnelle Methode (und will daher gar nicht erst anfangen mit for i in liste, weil's da doch bestimmt schnellere Methoden gibt.)
Vielen Dank schonmal für eure Hilfe,
Jo
Edit (Leonidas): Smileys entfernt.
Summe einer Liste mit Tupeln
Öhm... Nur mal so'n Vorschlag. Gibts bestimmt auch was in Itertools und so, aber...
Code: Alles auswählen
foo = [(7, 137, 35), (7, 134, 31), (7, 141, 31), (7, 139, 37), (7, 142, 33), (7, 137, 37)]
bar = tuple(map(sum, foo))
- Rebecca
- User
- Beiträge: 1662
- Registriert: Freitag 3. Februar 2006, 12:28
- Wohnort: DN, Heimat: HB
- Kontaktdaten:
Eine Moeglichkeit:
EDIT: Oder in einer Zeile:
Mmh, ob das die Lesbarkeit foerdert?
Code: Alles auswählen
>>> l = [(7, 137, 35), (7, 134, 31), (7, 141, 31)]
>>> print sum(map(lambda x: x[0], l))
21
>>> print sum(map(lambda x: x[1], l))
412
>>> print sum(map(lambda x: x[2], l))
97
Code: Alles auswählen
>>> a = tuple(sum(map(lambda x: x[i], l)) for i in range(3))
>>> a
(21, 412, 97)
Offizielles Python-Tutorial (Deutsche Version)
Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
Blackvivi, das ist zwar eine schöne Lösung aber leider nicht das was ich brauche: Meine Liste ist
[(7, 137, 35), (7, 134, 31), (7, 141, 31), (7, 139, 37), (7, 142, 33), (7, 137, 37), (7, 144, 37), (7, 143, 37), (6, 143, 38), (6, 143, 33), (6, 143, 38), (7, 150, 37), (6, 143, 37), (8, 144, 41), (2, 143, 38), (5, 147, 38), (7, 146, 37), (8, 152, 37), (6, 151, 40)]
Und ich brauche nicht
(7+137+35, 7+134+31, ...)
sondern
(7+7+7+7+..., 137+134+141+139..., 35+31+31+37+...).
Rebecca, das wäre schon richtig, aber gibt es keine Möglichkeit das sozusagen mit einer 'operation' zu machen?
EDIT:
Oh, ein EDIT! :)
Edit (Leonidas): Smileys entfernt.
[(7, 137, 35), (7, 134, 31), (7, 141, 31), (7, 139, 37), (7, 142, 33), (7, 137, 37), (7, 144, 37), (7, 143, 37), (6, 143, 38), (6, 143, 33), (6, 143, 38), (7, 150, 37), (6, 143, 37), (8, 144, 41), (2, 143, 38), (5, 147, 38), (7, 146, 37), (8, 152, 37), (6, 151, 40)]
Und ich brauche nicht
(7+137+35, 7+134+31, ...)
sondern
(7+7+7+7+..., 137+134+141+139..., 35+31+31+37+...).
Rebecca, das wäre schon richtig, aber gibt es keine Möglichkeit das sozusagen mit einer 'operation' zu machen?
EDIT:
Oh, ein EDIT! :)
Edit (Leonidas): Smileys entfernt.
Nicht ganz:BlackVivi hat geschrieben:Code: Alles auswählen
foo = [(7, 137, 35), (7, 134, 31), (7, 141, 31), (7, 139, 37), (7, 142, 33), (7, 137, 37)] bar = tuple(map(sum, foo))
Code: Alles auswählen
bar = tuple(map(sum, zip(*foo)))
HWK
Oh, ich hatte es falsch gelesen :-/ Tut mir leid. Aber HWK hat's ja schon korrigiert