我想用零填满我的matrix
。可惜的是,在下面的例子中,变量x
和y
是redundand:通过列表理解创建矩阵时的冗余变量
self.matrix = [[0 for x in range(0, self.N)] for y in range(0, self.N)]
乘法表,仅复制引用当然究竟是不是我所期待:
>>> matrix = [[0] * 5] * 5
>>> matrix
[[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]]
>>> matrix[1][1] = "X"
>>> matrix
[[0, 'X', 0, 0, 0], [0, 'X', 0, 0, 0], [0, 'X', 0, 0, 0], [0, 'X', 0, 0, 0], [0, 'X', 0, 0, 0]]
那么,有没有什么办法解决使用列表理解避免redundand变量(x
& y
)?
@Ashwini:这有帮助吗? – 2012-04-01 00:07:20
如果我没有错,那么他的问题是,当他将一个值添加到特定的列表项时,它也会被添加到列表中名为matrix的其他列表中。 和http://stackoverflow.com/a/8713681/846892解释了列表的这种行为。 – 2012-04-01 00:13:08
@AshwiniChaudhary:他知道那种行为。问题是一个完全不同的问题,虽然... – 2012-04-01 00:13:43