base_list = []
fina_list = []
for i in range(10):
base_list.append(i)
if i< 5:
fina_list = base_list
print("base:", base_list)
print("fina:", fina_list)
運(yùn)行結(jié)果如下
靜海ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書未來(lái)市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!base: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
fina: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
按照C/C++的賦值風(fēng)格,那么在i=5之后,fina_list的數(shù)據(jù)不再變化,這是因?yàn)閜ython講list類型自動(dòng)封裝為指針類型,在我們第一次對(duì)fina_list進(jìn)行賦值fina_list=base_list之后,此時(shí),兩個(gè)列表指針共同指向一個(gè)地址,不妨來(lái)驗(yàn)證一下
print("add_base:",id(base_list))
print("add_fina:",id(fina_list))
add_base: 140243619861512
add_fina: 140243619861512
此時(shí),我們修改base/fina的任何一個(gè)值,都相當(dāng)于修改同一個(gè)地址的內(nèi)容,就會(huì)出現(xiàn)上述復(fù)制失敗的情況。
解決方案使用深層拷貝機(jī)制
fina_list = base_list.copy()
or
import copy
fina_list = copy.deepcopy(base_list)
##此時(shí),我們的復(fù)制不再是淺層復(fù)制(即地址復(fù)制),而是在fina_list的地址上,講base_list的數(shù)據(jù)復(fù)制過(guò)去。
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧