Sha*_*ala 0 python list append python-3.x
我今天正在研究某人使用Python3的堆算法回溯的解决方案。解决方案如下:
def permute(self, nums):
def backtrack(start, end):
if start == end:
ans.append(nums[:])
for i in range(start, end):
nums[start], nums[i] = nums[i], nums[start]
backtrack(start+1, end)
nums[start], nums[i] = nums[i], nums[start]
ans = []
backtrack(0, len(nums))
return ans
Run Code Online (Sandbox Code Playgroud)
现在我正在看这行ans.append(nums[:]),写作的目的是nums[:]什么?不能nums正确编写功能吗?
考虑以下
>>> a = [1,2,3]
>>> b = [a]
>>> b[0].append(4)
>>> a
[1, 2, 3, 4]
Run Code Online (Sandbox Code Playgroud)
如您所见,由于您将对象存储在中,而不仅仅是的值,所以修改b[0]会修改。使用可以复制列表,因此。aaba[:]
>>> a = [1,2,3]
>>> b = [a[:]]
>>> b[0].append(4)
>>> a
[1, 2, 3]
Run Code Online (Sandbox Code Playgroud)
所以重点是传递值,而不是对象本身。
| 归档时间: |
|
| 查看次数: |
59 次 |
| 最近记录: |