當前位置:成語大全網 - 新華字典 - python問題:請問為什麽會提示list index out of range?

python問題:請問為什麽會提示list index out of range?

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