364 Stimmen

Liste von Nullen in Python

Wie kann ich eine Liste erstellen, die nur Nullen enthält? Ich möchte in der Lage sein, für jedes int in range(10) eine Nullen Liste zu erstellen.

Zum Beispiel, wenn das int im Bereich 4 war, werde ich bekommen:

[0,0,0,0]

und für 7:

[0,0,0,0,0,0,0]

3 Stimmen

Für große numerische Arrays sollten Sie numpy verwenden, das eine zeros-Funktion dafür hat.

1 Stimmen

Listenkomprehension: [0 for i in range(7)] oder eine andere Ganzzahl als 7.

7voto

kindall Punkte 167554
zlists = [[0] * i for i in range(10)]

zlists[0] ist eine Liste von 0 Nullen, zlists[1] ist eine Liste von 1 Null, zlists[2] ist eine Liste von 2 Nullen, usw.

0 Stimmen

Das ist eine gute Idee, aber sie funktioniert nicht für Listen länger als 9 Nullen. Das lässt sich leicht beheben (obwohl es nie für beliebige Listen funktionieren wird), aber dann stößt man auf ein größeres Problem, nämlich dass es T_N Nullen im Speicher speichert. Es ist besser, eine Factory-Funktion zu verwenden, wie es Ben in seiner akzeptierten Antwort getan hat.

1 Stimmen

Es gibt ein weiteres Problem damit, das auf eine kleine Feinheit aufgrund der Funktionsweise von Referenzen zurückzuführen ist: a=zlists[3]; a.append[5]; b=zlists[3]; print b gibt [0, 0, 0, 5] aus. b ist nicht eine Liste von Nullen, wie man es naiv erwarten könnte!

0 Stimmen

Die Frage war, eine Liste von Listen von Nullen zu erstellen. Meine Antwort tut das. Was dein zweites "Problem" betrifft - du hättest das gleiche Problem, egal wie du die Liste erstellst.

5voto

Gavin Anderegg Punkte 6142

Wenn Sie eine Funktion möchten, die eine beliebige Anzahl von Nullen in einer Liste zurückgibt, probieren Sie dies aus:

def make_zeros(number):
    return [0] * number

list = make_zeros(10)

# list enthält jetzt: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

4voto

bugfree Punkte 49

Hier ist der xrange Weg:

list(0 for i in xrange(0,5))

0 Stimmen

Für Python3 verwenden Sie range anstelle von xrange.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X