为什么列表p要单独用copy函数才能复制出一个新的列表,而数值直接赋值就可以
如下一段演示,直接用赋值使q=p列表,更改q,p也会一起更改,当时用赋值使p=i数字,p做加减并不会影响i的数值,为什么p =
q = p
q
q.pop()
5
q
p
i = 5
p = i
p = p - 1
p
4
i
5 这是因为列表和数字在Python中是不同类型的对象。
当你将一个列表赋值给一个变量时,实际上该变量保存的是对列表对象的引用(或者说指针),而不是实际的列表数据。所以当你使用变量操作列表时,实际上是通过引用找到了原始列表,所以原始列表也会受到影响。
而对于数值,赋值操作实际上是将数值的值复制给了变量,而不是引用。所以当你改变变量的值时,原始数值并不会受到影响。
如果你想复制一个列表并创建一个新的、独立的列表对象,可以使用`copy`函数来复制。这样,即使你对复制后的列表进行操作,原始列表也不会受到影响。
下面是使用`copy`函数复制列表的示例代码:
p =
q = p.copy()
q.pop()
print(q)# 输出:
print(p)# 输出:
希望能够解答你的疑问!如果还有其他问题,请随时提问。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 本帖最后由 jackz007 于 2024-4-9 12:38 编辑
p = # p 成为可变对象
q = p # 将对象 p 映射为 q,p、q 是同一个对象个体。
q = 5 # q 与 p 脱离映射关系,成为另一个对象
q = p . copy() # 将对象 p 复制为 q,p、q 是两个对象个体
本帖最后由 Stubborn 于 2024-4-9 18:06 编辑
你有一个误区在这里了
直接用赋值使q=p列表,更改q,p也会一起更改
p =
q = p
q
q.pop()
5
q
p
当时用赋值使p=i数字,p做加减并不会影响i的数值
i = 5
p = i
p = p - 1
p
4
i
5
p = p - 1 这里是对P的重新赋值,肯定不会影响到I值,能理解吗
为什么列表p要单独用copy函数才能复制出一个新的列表,而数值直接赋值就可以
关于这个问题,不一定需要用copy,相对数字直接赋值,,列表直接赋值格式应该是对应这样的。copy,是复制一块内存,到另外一块内存。应该这样理解
p =
q =
页:
[1]