第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

請(qǐng)教python中的copy和deepcopy的問題

請(qǐng)教python中的copy和deepcopy的問題

慕村225694 2018-07-16 15:13:08
按理說copy是淺拷貝,只是復(fù)制了指針引用, 而深拷貝會(huì)重新創(chuàng)建一個(gè)新對(duì)象,然后復(fù)制對(duì)象數(shù)據(jù)內(nèi)容。 但是下面的代碼證明我上面的理解是錯(cuò)誤的: import copy a = [8,9] b = copy.copy(a) c= a[:]print "before\t",a,b,c b[1] = 8print "changed\t",a,b,c上面將輸出: before  [8, 9] [8, 9] [8, 9] changed [8, 9] [8, 8] [8, 9]也就是說修改b中的值,不會(huì)影響到a和c 如果把copy換成deepcopy結(jié)果完全一致,為什么呢?
查看完整描述

3 回答

?
慕桂英3389331

TA貢獻(xiàn)2036條經(jīng)驗(yàn) 獲得超8個(gè)贊

google group中找到了想要的答案

Python中有一類對(duì)象是不可以原地修改的:數(shù)字、字符串、元組

當(dāng)你對(duì)它修改時(shí),Python會(huì)創(chuàng)建出新的對(duì)象。 
a = 3 
b = a 
b = 4 
print b    # Prints 4 
---------------- 
另一類對(duì)象是可以原地修改的:列表、字典等等 
L1 = [1,2] 
L2 = L1 
L2[1] = 3 
print L1,L2  #Prints [1,3] [1, 3] 

============================== =========== 
另:變量和對(duì)象本身在內(nèi)存中是分離的, 變量中有個(gè)叫做引用的部分用來(lái)指向相應(yīng)的引用。 

所以,你拷貝了一個(gè)不可變的對(duì)象的引用, 修改你得到的變量只會(huì)讓該變量的引用指向一個(gè)新的對(duì)象, 別指望還能改變?cè)瓉?lái)的變量的引用所指向?qū)ο蟮闹怠?/p>


查看完整回答
反對(duì) 回復(fù) 2018-07-17
?
鴻蒙傳說

TA貢獻(xiàn)1865條經(jīng)驗(yàn) 獲得超7個(gè)贊

lass Obj(object):
    def __init__(self,num):
        self.num=num
    def __str__(self):
        return str(self.num)

    __repr__=__str__def test(fun):
    a=[ Obj(10),Obj(11) ]
    b=fun(a)    
    print 'a=%s,b=%s'%(a,b)
    a.reverse()
    a[0].num=100
    print 'a=%s,b=%s'%(a,b)
    
    print '='test(lambda _:_)
    
    print 'copy.copy'test(copy.copy)
    
    print 'copy.deepcopy'test(copy.deepcopy)


查看完整回答
反對(duì) 回復(fù) 2018-07-17
?
隔江千里

TA貢獻(xiàn)1906條經(jīng)驗(yàn) 獲得超10個(gè)贊

上面得出錯(cuò)誤的結(jié)論,是因?yàn)閿?shù)組中使用的是int,而不是復(fù)雜類型?

查看完整回答
反對(duì) 回復(fù) 2018-07-17
  • 3 回答
  • 0 關(guān)注
  • 587 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)