您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Python:为什么在我实际上不更改列表时会更改它?

Python:为什么在我实际上不更改列表时会更改它?

这是因为在进行分配后,listlist2都引用相同的列表list2=list

尝试执行以下操作以查看它们是指相同的对象还是不同的对象:

id(list)
id(list2)

一个例子:

>>> list = [1, 2, 3, 4, 5]
>>> list2 = list
>>> id(list)
140496700844944
>>> id(list2)
140496700844944
>>> list.remove(3)
>>> list
[1, 2, 4, 5]
>>> list2
[1, 2, 4, 5]

如果您确实要创建这样的重复副本,listlist2不是引用原始列表,而是引用列表的副本,请使用slice运算符:

list2 = list[:]

一个例子:

>>> list
[1, 2, 4, 5]
>>> list2
[1, 2, 4, 5]
>>> list = [1, 2, 3, 4, 5]
>>> list2 = list[:]
>>> id(list)
140496701034792
>>> id(list2)
140496701034864
>>> list.remove(3)
>>> list
[1, 2, 4, 5]
>>> list2
[1, 2, 3, 4, 5]

另外,请勿将其list用作变量名,因为最初list是指类型列表,但是通过定义自己的list变量,您将隐藏list引用类型列表的原始变量。例:

>>> list
<type 'list'>
>>> type(list)
<type 'type'>
>>> list = [1, 2, 3, 4, 5]
>>> list
[1, 2, 3, 4, 5]
>>> type(list)
<type 'list'>
python 2022/1/1 18:46:06 有310人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶