dp = [[0] * 5]*20#错误的
dp[1][2]=6
print(dp)
[[0, 0, 6, 0, 0], [0, 0, 6, 0, 0], [0, 0, 6, 0, 0], [0, 0, 6, 0, 0], [0, 0, 6, 0, 0], [0, 0, 6, 0, 0], [0, 0, 6, 0, 0], [0, 0, 6, 0, 0], [0, 0, 6, 0, 0], [0, 0, 6, 0, 0], [0, 0, 6, 0, 0], [0, 0, 6, 0, 0], [0, 0, 6, 0, 0], [0, 0, 6, 0, 0], [0, 0, 6, 0, 0], [0, 0, 6, 0, 0], [0, 0, 6, 0, 0], [0, 0, 6, 0, 0], [0, 0, 6, 0, 0], [0, 0, 6, 0, 0]]
dp = [[0] * 5 for _ in range(20)]#正确
dp[1][2]=6
print(dp)
[[0, 0, 0, 0, 0], [0, 0, 6, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]
理由是列表是可变类型,且python的变量是对对象的引用,*生成的重复元素是对同一个对象的引用