我们创建一维数组是通常都是:
dp = [0] * N
所以我们可以推断二维列表可以这样创建:
dp = [[0] * N] * M
STOP!这样是错误的。
一维数组可以用 [0] * N 这种声明方式。但是二维数组不能用上面的声明方式,这会导致 dp 中的每行的列表是同一个 id,所以对其中一行的 *** 作都会表现为每一行的 *** 作,如下所示。
所以,在 Python 中声明二维数组的正确方式应该是使用 for 循环:
dp = [[0] * N for _ in range(M)]
这里利用 for 循环生成每一行,则每一行都是全新的,那么就不会产生上面的问题。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)