Elegante Art, Tupelarithmetik durchzuführen
Was ist die elegante und präzise Art und Weise (ohne meine eigene Klasse mit operator overloading), um Tupel Arithmetik in Python 2.7?
Können sagen, ich habe zwei Tupel:
a = (10, 10)
b = (4, 4)
Meine angestrebte Ergebnis ist
c = a - b = (6, 6)
Derzeit benutze ich:
c = (a[0] - b[0], a[1] - b[1])
Ich auch versucht:
c = tuple([(i - j) for i in a for j in b])
aber das Ergebnis war (6, 6, 6, 6)
. Ich glaube, die oben genannten arbeiten, wie eine verschachtelte for-Schleifen, resultierend in 4 Iterationen und 4 Werte in das Ergebnis.
InformationsquelleAutor der Frage | 2013-07-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie auf der Suche nach schnellen, die Sie verwenden können, numpy:
und wenn Sie möchten, um es in ein Tupel:
InformationsquelleAutor der Antwort vroomfondel
Eine option wäre,
Und
itertools.imap
dienen können, als Ersatz fürmap
.Natürlich können Sie auch andere Funktionen aus
operator
zuadd
mul
div
usw.Aber ich würde ernsthaft in Erwägung ziehen in eine andere Daten-Struktur, da ich nicht glaube, dass diese Art von problem ist fit für
tuple
sInformationsquelleAutor der Antwort Jared
Verwenden
zip
- und einen generator-Ausdruck:Demo:
Verwenden
itertools.izip
für eine Speicher-effiziente Lösung.Hilfe auf
zip
:InformationsquelleAutor der Antwort Ashwini Chaudhary
Dies ist auch nur so schön, ohne einen import überhaupt, obwohl lambda ist oft unerwünscht:
Wenn Sie suchen, um die Distanz zwischen zwei Punkten sagen, ein 2d-Koordinatensystem Sie verwenden sollten, ist der absolute Wert der Subtraktion der Paare.
InformationsquelleAutor der Antwort miigotu
meinem element-wise Tupel arithmetische Helfer
unterstützte Operationen: +, -, /, *, d
operation = " d " berechnet die Entfernung zwischen zwei Punkten auf einem 2D-Koordinatensystem
InformationsquelleAutor der Antwort internety