今天用python3写全排列的时候遇到的小问题
def permute(nums):
def backtrack(first = 0):
if first == n:
print(nums)
output.append(nums[:])
for i in range(first, n):
nums[first], nums[i] = nums[i], nums[first]
backtrack(first + 1)
nums[first], nums[i] = nums[i], nums[first]
n = len(nums)
output = []
backtrack()
print(output)
permute([1, 2, 3])
当output.append(nums)的时候
输出的是
我调试的时候发现原来append()方法是添加对象的引用
所以当每次改变nums后output里的数组也同时改变了
解决方法:
output.append(nums[:])
这样应该是变成深拷贝了具体原因我没有详细去找感兴趣的朋友可以去查查