最近做力扣遇到一个问题,
obstacleGrid=[[0],[1]]
m = len(obstacleGrid)
n = len(obstacleGrid[0])
# 需要考虑m=1 n=1
dp = [[0] * n] * m
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
但是当写dp[0][0]=1时,dp[1][0]也会自动变1,理由
定义的时候dp的m行是同一个[0]*n的索引,所以一个被改变,其他的都被改变。
靠谱点的初始化方式
dp = [[0 for _ in range(n)] for _ in range(m)]
- 1
或者深拷贝
import copy
dp = []
a = [0]*n
for i in range(m):
dp.append(copy.deepcopy(a))
- 1
- 2
- 3
- 4
- 5
参考:python 对二维数组赋值问题