我正在解决一个leetcode问题,在解决方案内部,我需要初始化列表中的列表(名称为dp的变量),所有条目均为0。然后,我要将dp [i] [i]分配给是1。但是,下面的第二种方法不起作用,只有第一种方法起作用。我想知道它们之间的差异。谢谢
s = 'aaaaa'
# method 1
dp = [[]]*len(s)
for i in range(len(s)):
dp[i] = [0] * len(s)
for i in range(0,len(s)):
dp[i][i] = 1
# method 2
dp = [[0]*len(s)]*len(s)
for i in range(0,len(s)):
dp[i][i] = 1
当打印我们的dp时,第一种方法将打印出[[1、0、0、0、0],[0、1、0、0、0],[0、0、1、0、0] ,[0,0,0,1,0],[0,0,0,0,1]]符合我的预期,但是第二种方法会打印出[[1、1、1、1、1], [1,1,1,1,1],[1,1,1,1,1],[1,1,1,1,1],[1,1,1,1,1]]。< / p>