Seite 1 von 1
Listen oder Tupel eintragweise verknüpfen
Verfasst: Montag 4. Mai 2009, 17:27
von HannesKlarner
Hi,
ich suche einen operator, op, der Listen oder Tupel eintragweise verknüpft. Z.B.
[1,2,3] op [9,8,8] = [10, 10, 11]
Insbesondere möchte ich +, -, *, ** elementweise ausführen. Kennt jemand einen?
Grüße,
Hannes.
Verfasst: Montag 4. Mai 2009, 17:31
von numerix
Code: Alles auswählen
from operator import add
a = [1, 2, 3]
b = [9, 8, 8]
c = map(add,a,b)
P.S. Falsche Subforum ...
Verfasst: Montag 4. Mai 2009, 17:40
von HannesKlarner
P.S. Falsche Subforum ...
Hab versucht das Thema mit Edit zu verchieben, als ichs bemerkt hatte. Geht anscheinend nicht nachträglich.
Danke für die schnellen Antworten.
Hannes.
Verfasst: Montag 4. Mai 2009, 17:45
von hendrikS
So geht's auch:
Edit: Unter Umständen ist eine Funktion anstelle von sum notwendig.
Etwa so:
Verfasst: Montag 4. Mai 2009, 17:49
von BlackJack
Falls die Menge der Zahlen grösser, oder die Anordnung "mehrdimensionaler" werden sollte, könnte man auch `numpy`-Arrays bemühen:
Code: Alles auswählen
In [15]: import numpy
In [16]: a = numpy.array([1, 2, 3])
In [17]: b = numpy.array([9, 8, 8])
In [18]: a + b
Out[18]: array([10, 10, 11])
Das wäre dann aber eine externe Bibliothek.
Verfasst: Montag 4. Mai 2009, 17:59
von HannesKlarner
super, danke.
oder die Anordnung "mehrdimensionaler" werden sollte, könnte man auch `numpy`-Arrays bemühen
Stimmt, map funktioniert nur mit eindimensionalen Dingen. Mehrdimensional brauch ich gerade nicht, aber wenns soweit ist denk ich dran.
Sitze hier an einem Linux Rechner in der Uni und import numpy liefert eine Meldung zurück, die sagt, daß es kein Modul mit diesem Namen gibt.
Weiß nicht genau, ob man Administratorenrechte braucht um ein Python Modul zu installieren?!
map(sum,zip(a,b))
was macht zip(a,b) ?
Verfasst: Montag 4. Mai 2009, 18:06
von BlackJack
`zip()` macht das was in der Dokumentation steht.
Code: Alles auswählen
In [20]: a = [1, 2, 3]
In [21]: b = [9, 8, 8]
In [22]: zip(a, b)
Out[22]: [(1, 9), (2, 8), (3, 8)]
Man kann bei Python vieles auch sehr einfach "live" ausprobieren.
Verfasst: Montag 4. Mai 2009, 18:18
von CM
@hendrikS:
... und man braucht keine eigene Definition. Und wenn die Funktion wirklich kompliziert werden: numpy oder scipy.
Verfasst: Montag 4. Mai 2009, 18:24
von birkenfeld
CM hat geschrieben:@hendrikS:
... und man braucht keine eigene Definition.
Nicht wirklich -- du bräuchtest ``uncurry(operator.mul)``.
``from haskell import uncurry`` vorausgesetzt.
Verfasst: Dienstag 5. Mai 2009, 13:09
von bords0