a = [1,2,3,4]
b = a
b[0] = 10
print a我没有碰过列表a中的数字,但它们仍然在变化。这一切为什么要发生?此外,这似乎返回了预期的结果:
a = [1,2,3,4]
b = a[:]
b[0] = 10
print a谁能告诉我第一段代码是什么以及为什么第一段代码更改了?
发布于 2017-10-28 04:06:23
Python没有传统意义上的变量。当您使用a = [1, 2, 3, 4]创建某些内容时,您只是创建一个指向该列表的新的“标记”a。
因此,b = a只是创建一个名为b的新标记,它指向相同的列表。如果你改变了b,你改变了a。
在第二个示例中,b = a[:],[:]是“切片”列表,在本例中,列表将返回列表的所有值,因此b现在指向它自己的副本1、2、3、4,而不是副本。
如果您要执行类似于b = a[1:3]的操作,那么您可以更好地了解片操作符的功能。
https://stackoverflow.com/questions/46986086
复制相似问题