这两种实现之间有什么区别

时间:2019-10-01 17:12:56

标签: python-2.7

我正在解决一个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>

0 个答案:

没有答案