蟒蛇组矩阵添加操作
问题描述:
我有一个输入矩阵看起来像这样蟒蛇组矩阵添加操作
grid = [[1,1,2],[1,2,3],[3,2,4]]
我使用下面的代码来构建集的矩阵。
m,n = len(grid), len(grid[0])
valuesets = [[set()]*n for _ in range(m)]
for j in range(n):
s = sum(grid[0][:j+1])
valuesets[0][j].add(s)
print valuesets[0][0]
输出给了我
set([1])
set([1, 2])
set([1, 2, 4])
我很奇怪,为什么valuesets [0] [0]正在更新每次在for循环而不是停留在相同的值设定([1])像我预料的那样?谢谢。
答
原因是[set()] * n
通过复制相同的set()
实例来创建列表。
如果要获取不同设置对象的列表,请使用[set() for _ in range(n)] instead
。
默认参数值: https://docs.python.org/3/tutorial/controlflow.html#default-argument-values –
不要这样做'[set()] * n'。改为使用'[set()for _ in range(n)]'。 –