以前都沒注意到兩者不太一樣
直到我跑了下面這段碼
def subsets(self, nums):
def backtrack(start, end, tmp):
ans.append(tmp[:])
for i in range(start, end):
tmp.append(nums[i])
backtrack(i+1, end, tmp)
tmp.pop()
ans = []
backtrack(0, len(nums), [])
return ans
假如nums=[1,2,3]
照這段碼跑下去, tmp能夠隨著函數的呼叫持續變動,
最後ans 會返回1,2,3 [[],[1],[1,2],[1,2,3],[1,3],[2],[2,3],[3]]
然而如果第三行的tmp[:]改為tmp
最後只會是[[],[],[],[],[],[],[],[]]
不知道兩者間的差別在哪
而這差別除了在函數呼叫有影響外, 還有什麼時候要注意呢
以往沒特別打上[:]好像都沒出過事@@
用type看了一下都是<class 'list'>
我猜會不會tmp只是類似這list開頭的指標
而tmp[:]才是整段list的值?