2D-Liste seltsame Verhalten bei dem Versuch, einen einzelnen Wert zu ändern [Duplikat]
-
02-10-2019 - |
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?
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]]
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow