python问题:请问为什么会提示list index out of range?
2022-12-14 · 百度认证:北京惠企网络技术有限公司官方账号
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