Dies wird am besten Schritt für Schritt erklärt:
>>> x = [[]]*3
>>> x
[[], [], []]
>>> x[0].append('a')
>>> x
[['a'], ['a'], ['a']]
>>> x[1].append('b')
>>> x
[['a', 'b'], ['a', 'b'], ['a', 'b']]
>>> x[2].append('c')
>>> x
[['a', 'b', 'c'], ['a', 'b', 'c'], ['a', 'b', 'c']]
>>> x[0]=['d']
>>> x
[['d'], ['a', 'b', 'c'], ['a', 'b', 'c']]
Die erste Anweisung erstellt in eine Liste mit drei Referenzen auf das gleiche Element. Wenn Sie also das erste Element ändern, ändern Sie auch das zweite und dritte Element. Daher fügen die append-Anweisungen jedem Element der Liste eine Zahl hinzu.
Diese Frage wird buchstäblich einmal am Tag gestellt ... Das Problem scheint zu sein, dass Sie nicht nach der Lösung suchen können, wenn Sie nicht bereits wissen, was vor sich geht. –
um ein solches Verhalten zu verbieten, ist es besser Listen mit der folgenden Syntax zu erstellen: >>> x = [[] für _ im Bereich (3)] –