Fügen Sie zwei Matrizen in python
Ich versuche zu schreiben, eine Funktion, die addiert zwei Matrizen übergeben werden, die folgenden doctests:
>>> a = [[1, 2], [3, 4]]
>>> b = [[2, 2], [2, 2]]
>>> add_matrices(a, b)
[[3, 4], [5, 6]]
>>> c = [[8, 2], [3, 4], [5, 7]]
>>> d = [[3, 2], [9, 2], [10, 12]]
>>> add_matrices(c, d)
[[11, 4], [12, 6], [15, 19]]
Also schrieb ich eine Funktion:
def add(x, y):
return x + y
Dann schrieb ich die folgende Funktion:
def add_matrices(c, d):
for i in range(len(c)):
print map(add, c[i], d[i])
Und ich Art bekommen die richtige Antwort.
InformationsquelleAutor gergalerg | 2011-06-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Matrix-Bibliothek
Können Sie die
numpy
- Modul, die Unterstützung für diese.Home-grown-Lösung: Schwergewicht
Vorausgesetzt, Sie wollte es selbst implementieren, würde man die Einrichtung der folgenden Maschinen, die ermöglichen würden Sie definieren beliebige paarweise Operationen:
Nun hinzufügen paarweise Methoden ist so einfach wie überzeugend:
Beispiel:
Können Sie sogar paarweise Errichtung in die Stufe, die negation, die binären Operationen, etc. Ich nicht zeigen es hier, weil es wahrscheinlich am besten, lassen * und ** für die matrix-Multiplikation und matrix-Potenzierung.
Home-grown-Lösung: leichte
Wenn Sie wollen einfach nur eine wirklich einfache Methode zum zuordnen einer Bedienung über nur zwei verschachtelte-Liste-Matrizen, können Sie dies tun:
Demo:
Mit einer zusätzlichen if-else-und keyword-argument verwenden, können Sie Indizes, die in Ihren lambda. Unten ist ein Beispiel, wie man ein matrix-Reihe-um
enumerate
Funktion. Die if-else-und-Schlüsselwort ausgelassen wurden, die oben für Klarheit.Bearbeiten
So könnten wir schreiben die obige
add_matrices
Funktion etwa so:Demo:
Kein problem, ich bin glücklich, zu erklären, warum deine Antwort ist fast richtig. Dies ist äußerst wichtig: Es gibt einen Unterschied zwischen der Rückkehr einen Wert aus, und drucken Sie einen Wert ein. Im Allgemeinen, Sie nicht nennen wollen
print
(oder andere "Nebenwirkung code") in eine Funktion; Sie soll Funktionen für die Rückgabe von neuen - Werte, die Sie in später gedruckt. z.B. Ihre Funktion ist nicht wieder alles:add_matrices(c,d)==None
. Sie möchtenadd_matrices(c,d)==[[..],[..],[..]]
. Wenn alle diese Antwort scheinbar anders, Sie alle erstellen Sie eine neue leere matrix, füllen Sie es aus und schicken es zurück. =)mehr Raum] Dies nennt man funktionale Programmierung, und ist extrem wichtig. Jedenfalls, um zu zeigen, das Missverständnis mit doctests, die Eingabe sowohl
1
undprint(1)
im interpreter zeigt das gleiche Ergebnis. Allerdings1==1
Wahr ist, währendprint(1)==1
Falsch ist (der Wert desprint(...)
ist nichts). Die moral hier ist, müssen wir einen Rückgabewert von Funktionen, oder sonst werden wir nicht in der Lage, um Sie später wiederverwenden in anderen Funktionen. Sie brauchen nicht zu rufenprint
beim Umgang mit doctests, und im Allgemeinen musst es nur einmal (oder nie) in ein großes Programm.InformationsquelleAutor ninjagecko
Ich Liebe Sie stackoverflow Menschen............
InformationsquelleAutor Petar Ivanov
Aber wie oben schon gesagt, gibt es keine Notwendigkeit, das Rad neu zu erfinden, verwenden Sie einfach
numpy
, die ist wahrscheinlich schneller und flexibler.InformationsquelleAutor Tamás
Eine weitere Lösung:
InformationsquelleAutor Artsiom Rudzenka