Wie liste ich eine Liste vor?

8

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.

    
Charles L. 18.03.2011, 01:27
quelle

4 Antworten

8

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.

%Vor%

Meine Testergebnisse:

%Vor%     
senderle 18.03.2011, 01:32
quelle
9

Vielleicht sollten Sie NumPy in Erwägung ziehen. Es scheint, als ob du numerische Arbeit machst, für die es gemacht ist. Dies ist der schnellste bisher, ohne die Import-Anweisung:

%Vor%

Zeiten:

%Vor%     
detly 18.03.2011 01:59
quelle
5

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.

    
Omnifarious 18.03.2011 01:32
quelle
1

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.

    
Chris Lutz 18.03.2011 01:33
quelle

Tags und Links