我正在编写如下的置换函数,我感到困惑的是,如果我们返回“res.append(nums[:])”,它可以完美运行,但是如果我们只返回“res.append(nums)”,它'只会返回原始的 nums 值,而不是在我操作后存储新的 nums ......但不确定它背后的理论,有人可以解释一下吗?谢谢!
https://leetcode.com/problems/permutations/
class Solution(object):
def permute(self, nums):
"""
:type nums: List[int]
:rtype: List[List[int]]
"""
if len(nums)==0:
return [[]]
res=[]
def get_permute(n):
if n==0:
res.append(nums[:]) ##<----here if we do res.append(nums) it'll be wrong, but why?
return
for i in range(n+1):
nums[i], nums[n]=nums[n], nums[i]
get_permute(n-1)
nums[n], nums[i]=nums[i], nums[n]
get_permute(len(nums)-1)
return res