python问题:请问为什么会提示list index out of range?

 我来答
惠企百科
2022-12-14 · 百度认证:北京惠企网络技术有限公司官方账号
惠企百科
惠企百科网是一家科普类综合网站,关注热门中文知识,集聚互联网精华中文知识,本着自由开放、分享价值的基本原则,向广大网友提供专业的中文知识平台。
向TA提问
展开全部

python中列表变量的“赋值b=a”并没有新建一个列表,而是将b指向了与a的同一个列表。b与a共同指向一个列表“实例”。当删除了a列表中的元素,b再引用就会出现【list index out of range】的错误。

实际上,python是采用传值和传引用结合的一种方式。如果函数收到的是一个可变对象(比如字典或者列表)的引用,就能修改对象的原始值——相当于通过“传引用”来传递对象。如果函数收到的是一个不可变对象(比如数字、字符或者元组)的引用,就不能直接修改原始对象——相当于通过传值来传递对象。

当在 Python 中 a = something 应该理解为给 something 贴上了一个标签 a。当再赋值给 a 的时候,就好象把 a 这个标签从原来的 something 上拿下来,贴到其他对象上,建立新的 reference。

扩展资料:

解决方法:

1、使用值拷贝:

b=a[:],表示将列表a中的所有元素重新赋值个b列表,在内存中,a,b列表分配不同的内存单元,相应的操作互不影响。

2、使用copy模块:

import copy

d={"name":""}

l=[]

for i in range(5):

d["name"]=i

l.append(d)

l = copy.deepcopy(l)

print (l)

deep copy 更加符合复制」的定义: 一旦复制出来了,就应该是独立的了。如果想要的是一个字面意义的「copy」,那就直接用 deep_copy 即可。

python的数据存储方式 :

Python 存储变量的方法跟其他 OOP 语言不同。与其说是把值赋给变量,不如说是给变量建立了一个到具体值的 reference。

参考资料来源:百度百科-Python

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式