Ich erstelle eine Liste von Listen mit diesem Code:
%Vor%Gibt es einen effizienteren Weg, dies zu tun? Ich hoffe auf etwas in der Art von nullArray = [0] * Np; ZeroMat = ZeroArray * Np aber kann nichts ähnliches finden.
Sie könnten dies tun:
%Vor%Update : Wenn wir es zu einem Rennen machen wollen, habe ich etwas schneller (auf meinem Computer) gefunden als die Omnifarious-Methode. Das schlägt natürlich nicht numpig; aber das ist alles akademisch, oder? Ich meine wir sprechen hier über Mikrosekunden.
Ich denke, das funktioniert, weil es verhindert, dass append
und die Vorabzuweisung von zeroMatrix
vermeidet.
Meine Testergebnisse:
%Vor%Das wäre wahrscheinlich etwas effizienter:
%Vor% Was Sie wirklich gerne hätten, wird nicht so funktionieren, wie Sie es hoffen. Wenn Sie Np
Kopien eines Listenelements mit *
erstellt haben, erhalten Sie Np
Referenzen auf dieselbe Sache. Für die 0
ist das keine große Sache, da Sie nur eine neue Nummer bekommen, wenn Sie etwas hinzufügen. Aber für Listen würden Sie mit einer Matrix enden, in der, sobald Sie ein Element einer Zeile geändert haben, die ganze Spalte sich genau mit dieser ändern würde.
Dieser Weg ist der bisher zweitschnellste:
%Vor%Ich kann meine eigene Zeit der numpy-basierten Lösung nicht machen, da ich auf meinem System kein numpy-Paket für Python3 habe. Aber es ist definitiv deutlich schneller.
Vielleicht möchten Sie das?
%Vor% Ich bin mir nicht sicher, ob dies einen Leistungsvorteil bringt (Profil, wie immer), aber ich weiß nicht wirklich, was Sie mit "effizient" meinen. Anders als die Verwendung von list.append
zu vermeiden.
Tags und Links python