今天在做一道动态规划题时 遇到一个问题 耗费了许多时间 最终发现是列表生成的问题
涉及到python中 “深复制”和“浅复制”
目的:生成一个2维列表 每一维包含9个元素
L = [[0]*9]
L = L*2
最开始用上述代码生成 但只要后面对列表中某一行的元素进行修改 则会修改所有行
如:
for i in range(6):
L[0][i] = 1
上述代码本意为对L中第1行前6列元素赋值为一 但这样之后所有行都改变了。这是因为 "*" 操作符相当于"浅复制"的概念。只复制了一个"指针"过去。
要实现深复制,应用下述代码生成列表:
L = [[0]*9 for i in range(2)]
参考: