这是设计使然。在列表的元素上使用乘法时,您正在复制引用。
请参阅Python编程/列表Wikibook上的“列表创建快捷方式”部分,其中详细介绍了对可变对象的列表引用问题。
他们建议的解决方法是列表理解:
>>> s = [[0]*3 for i in range(2)]>>> s[[0, 0, 0], [0, 0, 0]]>>> s[0][1] = 1>>> s[[0, 1, 0], [0, 0, 0]]

这是设计使然。在列表的元素上使用乘法时,您正在复制引用。
请参阅Python编程/列表Wikibook上的“列表创建快捷方式”部分,其中详细介绍了对可变对象的列表引用问题。
他们建议的解决方法是列表理解:
>>> s = [[0]*3 for i in range(2)]>>> s[[0, 0, 0], [0, 0, 0]]>>> s[0][1] = 1>>> s[[0, 1, 0], [0, 0, 0]]