Seite 1 von 1
Werte einer Reihe Multiplizieren
Verfasst: Freitag 18. Juli 2008, 21:45
von Impi
Moin Moin,
Ich bin grade beim Python lernen und habe mir grade eine Funktion definiert:
Code: Alles auswählen
def pupkey(seq):
liste = liste(seq)
zahlen = [int(item)
for item in liste]
return int(??)
Ziel soll es sein die Werte aus der der Liste, in dem Fall sind es zwei, miteinander zu Multiplizieren. Habe wie blöd den Operator dazu gesucht aber nix gefunden.
Hoffe auf Hilfe
Mfg Impi
Verfasst: Freitag 18. Juli 2008, 21:47
von BlackVivi
=DD
Edit:
Ansonsten, wenn du die Operatoren suchst...
Obwohl man locker mit Lambda arbeiten könnte... oder auch nicht. Wäh, keine Ahnung. BlackJack kommt eh gleich und macht irgendwas besseres ;_;
Verfasst: Freitag 18. Juli 2008, 21:59
von Impi
Code: Alles auswählen
def pupkey(seq):
liste = list(seq)
zahlen = [int(item)
for item in liste]
return reduce(lambda p,q: p*q, [zahlen])
Bekomme nur die Liste ausgegeben die ich im Hauptprogramm erstellt habe!? :K
Verfasst: Freitag 18. Juli 2008, 22:03
von BlackVivi
Impi hat geschrieben:Code: Alles auswählen
def pupkey(seq):
liste = list(seq)
zahlen = [int(item)
for item in liste]
return reduce(lambda p,q: p*q, [zahlen])
Bekomme nur die Liste ausgegeben die ich im Hauptprogramm erstellt habe!? :K
Zahlen ist doch schon eine Liste, du musst sie nicht in eckige Klammern packen.
Verfasst: Freitag 18. Juli 2008, 22:05
von Impi
Ah Merci

Verfasst: Freitag 18. Juli 2008, 22:25
von Leonidas
BlackVivi hat geschrieben:
=DD
Edit:
Ansonsten, wenn du die Operatoren suchst...
Naja, letzteres ist eben nicht mehr als ``2 * 2`` umständlich geschrieben.
Aber wir können das ja durchaus auch verwenden:
Code: Alles auswählen
>>> import operator
>>> reduce(operator.mul, [1, 2, 3, 4, 5])
120
Verfasst: Samstag 19. Juli 2008, 01:28
von BlackVivi
Leonidas hat geschrieben:Naja, letzteres ist eben nicht mehr als ``2 * 2`` umständlich geschrieben.
Aber wir können das ja durchaus auch verwenden:
Code: Alles auswählen
>>> import operator
>>> reduce(operator.mul, [1, 2, 3, 4, 5])
120
Genau aus diesem Zweck hab ich's ihm ja geschrieben. Hab die Operatoren in dieser "Funktionionsform" eben auch schonmal gesucht und wollte lambda damals nicht verwenden, deswegen...
Verfasst: Samstag 19. Juli 2008, 12:23
von Leonidas
Das geht dann noch einfacher:
Verfasst: Samstag 19. Juli 2008, 14:47
von Darii
Das scheitert aber an long und float
Verfasst: Samstag 19. Juli 2008, 16:47
von Leonidas
Darii hat geschrieben:Das scheitert aber an long und float
Inwiefern? Haben beide ``_mul__``.
Verfasst: Samstag 19. Juli 2008, 17:20
von BlackJack
@Leonidas: Ich denke mal Darii meint das hier:
Code: Alles auswählen
In [15]: reduce(int.__mul__, [1.0, 2.0, 3.0, 4.0, 5.0])
---------------------------------------------------------------------------
<type 'exceptions.TypeError'> Traceback (most recent call last)
/home/bj/<ipython console> in <module>()
<type 'exceptions.TypeError'>: descriptor '__mul__' requires a 'int' object but received a 'float'
Da ist `operator.mul()` flexibler.