Frage

Mögliche Duplizieren:
Unexpected Funktion in einer Python-Liste von Listen

Also ich bin relativ neu in Python und ich habe Probleme beim Arbeiten mit 2D-Listen.

Hier ist mein Code:

data = [[None]*5]*5
data[0][0] = 'Cell A1'
print data

und hier ist der Ausgang (formatiert für Lesbarkeit):

[['Cell A1', None, None, None, None],
 ['Cell A1', None, None, None, None],
 ['Cell A1', None, None, None, None],
 ['Cell A1', None, None, None, None],
 ['Cell A1', None, None, None, None]]

Warum jeder Zeile den Wert zugewiesen bekommen?

War es hilfreich?

Lösung

Dies macht eine Liste mit fünf Verweise auf die gleichen Liste:

data = [[None]*5]*5

Verwenden Sie so etwas wie dies stattdessen die schafft fünf separate Listen:

>>> data = [[None]*5 for _ in range(5)]

Jetzt tut es das, was Sie erwarten:

>>> data[0][0] = 'Cell A1'
>>> print data
[['Cell A1', None, None, None, None],
 [None, None, None, None, None],
 [None, None, None, None, None],
 [None, None, None, None, None],
 [None, None, None, None, None]]
scroll top