Im Moment habe ich vector3-Werte als Listen dargestellt. Gibt es eine Möglichkeit, 2 dieser ähnlichen Vektor-3-Werte zu subtrahieren?
[2,2,2] - [1,1,1] = [1,1,1]
Soll ich Tupel verwenden?
Wenn keiner von ihnen diese Operanden für diese Typen definiert, kann ich sie stattdessen definieren?
Wenn nicht, sollte ich eine neue vector3-Klasse erstellen?
Wenn Ihre Listen a und b sind, können Sie Folgendes tun:
Aber du solltest es wahrscheinlich nicht. Niemand wird wissen, was es bedeutet.
quelle
map(float.__sub__, a, b)
funktioniert. Danke für den Tipp!Ich würde empfehlen NumPy auch
Es ist nicht nur schneller für die Vektormathematik, sondern verfügt auch über eine Vielzahl von praktischen Funktionen.
Wenn Sie etwas noch schnelleres für 1d-Vektoren wollen, versuchen Sie es mit vop
Es ist ähnlich wie MatLab, aber kostenlos und so. Hier ist ein Beispiel dafür, was Sie tun würden
Boom.
quelle
np.array
wäre eine einfachere LösungWenn Sie zwei Listen mit den Namen "a" und "b" haben, können Sie Folgendes tun:
[m - n for m,n in zip(a,b)]
quelle
Eine etwas andere Vektorklasse.
quelle
quelle
Wenn Sie mehr als nur einfache Einzeiler ausführen möchten, ist es besser, eine eigene Klasse zu implementieren und die entsprechenden Operatoren zu überschreiben, die für Ihren Fall gelten.
Entnommen aus der Mathematik in Python :
quelle
Für denjenigen, der früher auf Pycharm programmiert hat, werden auch andere wiederbelebt.
quelle
Die Kombination von
map
undlambda
Funktionen in Python ist eine gute Lösung für diese Art von Problem:zip
Funktion ist eine weitere gute Wahl, wie @UncleZeiv zeigtquelle
quelle
Diese Antwort zeigt, wie man "normalen / leicht verständlichen" Python-Code schreibt.
Ich schlage vor, nicht zu verwenden,
zip
da nicht wirklich jeder davon weiß.Die Lösungen verwenden Listenverständnisse und allgemeine integrierte Funktionen.
Alternative 1 (empfohlen):
Empfohlen, da nur die grundlegendsten Funktionen in Python verwendet werden
Alternative 2:
Alternative 3 (wie von BioCoder erwähnt ):
quelle
Versuche dies:
quelle