栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

这是因为在进行分配后,

list
list2
都引用相同的列表
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]

如果您确实要创建这样的重复副本,

list
list2
不是引用原始列表,而是引用列表的副本,请使用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'>


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/637694.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号