Py学习  »  tanksapka  »  全部回复
回复总数  1
5 年前
回复了 tanksapka 创建的主题 » 列表中的Python运算符星号[重复]

这是因为Python如何处理内存中的对象。当您使用 * 2 要复制列表,Python不会在内存中创建单独的列表对象,它只复制第二个列表位置的内存指针。由于第一个元素发生变异时的这种行为,它也会影响第二个元素。 你可以使用 id() 函数检查Python中的对象id。你会看到的 a[0] a[1] 会有相同的身份证。

>>> a = [[1] * 2] * 2
>>> a[0][0] = 2
>>> a
[[2, 1], [2, 1]]
>>> id(a[0])
140608840898432
>>> id(a[1])
140608840898432
>>> id(a[0]) == id(a[1])
True