Я думаю, что здесь очень странный код Python, но я не знаю причину:Почему поведение питона не соответствует ожиданиям
In [7]: a = [[]] * 3
In [8]: b = [[], [], []]
In [9]: a == b
Out[9]: True
In [10]: a[0].append(1)
In [11]: b[0].append(1)
In [12]: a == b
Out[12]: False
In [13]: a
Out[13]: [[1], [1], [1]]
In [14]: b
Out[14]: [[1], [], []]
Почему это [[1], [1], [1]]
после a[0].append(1)
?
Аналогичная проблема:
In [15]: c = dict.fromkeys(range(3),[])
In [16]: d = {0:[], 1:[], 2:[]}
In [17]: c == d
Out[17]: True
In [18]: c[0].append(1)
In [19]: d[0].append(1)
In [20]: c == d
Out[20]: False
In [21]: c
Out[21]: {0: [1], 1: [1], 2: [1]}
In [22]: d
Out[22]: {0: [1], 1: [], 2: []}
В моей понимаю, a
является b
и c
также равна d
, но это не так. ЗАЧЕМ? Может кто-нибудь мне помочь? Огромное спасибо!
Спасибо! Например, если я хочу создать длинный список, например 'b', он будет содержать 100' [] 's. Очевидно, что 'b = [[], [], [], ...]' не является хорошим решением, как я могу его достичь? –
Добавлен пример. –