Python 注意嵌套数组的拷贝和引用
Posted SpikeKing
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python 注意嵌套数组的拷贝和引用相关的知识,希望对你有一定的参考价值。
Python的数组默认是引用状态,如果一个数组放到另一个数组中,则需要把第1个数组进行copy,否则会一改全改。
拷贝数组的方式有两种,copy.copy(nums) 或 nums[:]。
例如全排列的回溯法,如果直接res.append(nums),则会出错,元素全部相同;而使用copy模式,则可以正确输出全排列。
import copy
class Solution:
def permute(self, nums: List[int]) -> List[List[int]]:
def backtrack(first=0):
if first == n:
res.append(nums[:])
# res.append(copy.copy(nums)) 等价
print('res: {}'.format(res))
print('nums: {}'.format(nums))
print('nums[:]: {}'.format(nums[:]))
for i in range(first, n):
nums[first], nums[i] = nums[i], nums[first]
backtrack(first+1)
nums[i], nums[first] = nums[first], nums[i]
res = []
n = len(nums)
backtrack()
return res
以上是关于Python 注意嵌套数组的拷贝和引用的主要内容,如果未能解决你的问题,请参考以下文章