以前都没注意到两者不太一样
直到我跑了下面这段码
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的值?