Skip to content

Initialisieren einer Liste mit gegebener Größe und Werten in Python

Python

Dieser Artikel genau, wie Sie eine Liste mit beliebiger Größe (Anzahl der Elemente) und Werte in Python initialisieren.

  • Erstellen Sie eine leere Liste
  • Initialisieren Sie eine Liste mit beliebiger Größe und Werten
  • Hinweise zum Initialisieren einer 2D-Liste
  • Für Tupel und Arrays

Siehe den following Artikel über die Initialisierung des NumPy-Arrays ndarray.

Erstellen Sie eine leere Liste

Eine leere Liste WIRD wie folgt erstellt. Die Anzahl der Elemente einer Liste erhalten Sie mit der eingebauten Funktion len().

l_empty = []
print(l_empty)
# []

print(len(l_empty))
# 0

Sie können ein Element mit append() hinzufügen oder mit remove() entfernen.

l_empty.append(100)
l_empty.append(200)
print(l_empty)
# [100, 200]

l_empty.remove(100)
print(l_empty)
# [200]

In den following Artikeln FINDEN SIE Halbleiter zum Hinzufügen und Entfernen von Elementen aus Listen.

Initialisieren Sie eine Liste mit beliebiger Größe und Werten

Wie oben erwähnt, können Sie in Python problemlos Elemente zu einer Liste hinzufügen und daraus entfernen, sodass es in den meisten Fällen nicht erforderlich ist, die Liste im Voraus zu initialisieren.

Wenn SIE Eine Liste mit beliebig vielen Elementen initialisieren möchten, bei der alle Elemente mit beliebigen Werten sind, can SIE den *-Operator wie folgt verwenden.

l = [0] * 10
print(l)
# [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

print(len(l))
# 10

Es WIRD Eine Liste generiert, sterben sterben Elemente der ursprünglichen Liste wiederholt.

print([0, 1, 2] * 3)
# [0, 1, 2, 0, 1, 2, 0, 1, 2]

Sie können eine Liste von fortlaufenden Nummern mit range() erzeugen.

Hinweise zum Initialisieren einer 2D-Liste

Seien Sie vorsichtig, wenn Sie eine Liste von Listen initialisieren.

Der Code ist nicht gut.

l_2d_ng = [[0] * 4] * 3
print(l_2d_ng)
# [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]

Wenn Sie eine Liste aktualisieren, werden alle Listen geändert.

l_2d_ng[0][0] = 5
print(l_2d_ng)
# [[5, 0, 0, 0], [5, 0, 0, 0], [5, 0, 0, 0]]

l_2d_ng[0].append(100)
print(l_2d_ng)
# [[5, 0, 0, 0, 100], [5, 0, 0, 0, 100], [5, 0, 0, 0, 100]]

Dies liegt daran, dass die inneren Listen alle dasselbe Objekt sind.

print(id(l_2d_ng[0]) == id(l_2d_ng[1]) == id(l_2d_ng[2]))
# True

SIE KÖNNEN WIE FOLGT SCHREIBEN, INDEM SIE Listenverständnisse verwenden.

l_2d_ok = [[0] * 4 for i in range(3)]
print(l_2d_ok)
# [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]

Jede innere Liste wird als ein anderes Objekt behandelt.

l_2d_ok[0][0] = 100
print(l_2d_ok)
# [[100, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]

print(id(l_2d_ok[0]) == id(l_2d_ok[1]) == id(l_2d_ok[2]))
# False

Obwohl im Beispiel range() used WIRD, IST JEDE iterierbare Größe der gewünschten Größe akzeptabel.

l_2d_ok_2 = [[0] * 4 for i in [1] * 3]
print(l_2d_ok_2)
# [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]

l_2d_ok_2[0][0] = 100
print(l_2d_ok_2)
# [[100, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]

print(id(l_2d_ok_2[0]) == id(l_2d_ok_2[1]) == id(l_2d_ok_2[2]))
# False

Wenn Sie eine mehrdimensionale Liste generieren möchten, können Sie Listenverständnisse verschachteln.

l_3d = [[[0] * 2 for i in range(3)] for j in range(4)]
print(l_3d)
# [[[0, 0], [0, 0], [0, 0]], [[0, 0], [0, 0], [0, 0]], [[0, 0], [0, 0], [0, 0]], [[0, 0], [0, 0], [0, 0]]]

l_3d[0][0][0] = 100
print(l_3d)
# [[[100, 0], [0, 0], [0, 0]], [[0, 0], [0, 0], [0, 0]], [[0, 0], [0, 0], [0, 0]], [[0, 0], [0, 0], [0, 0]]]

Für Tupel und Arrays

Sie können sowohl Tupel als auch Listen initialisieren.

Beachten Sie, dass ein Tupel mit einem Element erforderlich ist.

t = (0,) * 5
print(t)
# (0, 0, 0, 0, 0)

Beim Array-Typ können Sie die initialisierte Liste an den Konstruktor übergeben.

import array

a = array.array('i', [0] * 5)
print(a)
# array('i', [0, 0, 0, 0, 0])