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

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

意外的結(jié)果樹遍歷 - Python

意外的結(jié)果樹遍歷 - Python

Smart貓小萌 2023-06-06 17:19:55
self.path我有一個(gè)意想不到的結(jié)果,其中和的值self.path_temp不同,它們唯一不同的方式是一個(gè)由字符串更新,另一個(gè)由列表更新,所有這些都通過函數(shù)作為trav參數(shù)傳遞。列表是否以某種方式持久存在于 python 的內(nèi)存中?正確或詳細(xì)的解釋將不勝感激!PS:正確的是self.pathwhich is updated with the string.    def binaryTreePaths(self, root: TreeNode) -> List[str]:                        self.path = []        temp = []        self.path_temp = []                def trav(root,path,temp):                        if root:                                path += str(root.val)                temp.append(root.val)                if root.right == None and root.left==None:                    self.path.append('->'.join(path))                    self.path_temp.append('->'.join(temp))                                                    trav(root.left,path,temp)                trav(root.right,path,temp)                        trav(root,'',temp)            print(self.path)        print(self.path_temp)
查看完整描述

1 回答

?
慕哥6287543

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

不同之處在于它path是一個(gè)原始值(一個(gè)字符串)而temp不是。當(dāng)你做

path += str(root.val)

您實(shí)際上是在創(chuàng)建一個(gè)新字符串。字符串在 Python 中是不可變的。同樣,函數(shù)的調(diào)用者也看不到path它作為參數(shù)傳遞的變量的任何變化。

這是一個(gè)不同的故事temp。當(dāng)你做

temp.append(root.val)

...你正在改變temp列表。這是調(diào)用者作為參數(shù)傳遞的列表,因此調(diào)用者的列表會被此操作改變。在所有的遞歸過程中,有幾個(gè)temp變量實(shí)例,但它們都引用同一個(gè)列表。Everyappend影響所有temp變量實(shí)例。

如果你想temp表現(xiàn)得像path,那么你必須創(chuàng)建一個(gè)列表而不是改變現(xiàn)有列表:

temp = temp + [root.val]

注意:不要將其縮短為temp += [root.val],因?yàn)槟菢幽鷮⒃俅问乖剂斜盱o音。


查看完整回答
反對 回復(fù) 2023-06-06
  • 1 回答
  • 0 關(guān)注
  • 126 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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