尝试创建
董事会(2,3)
导致
[[无,无,无],[无,无,无]]
然而,我只是连续获得6 None
,而不是两组之间的休息。
def none_board(n, m):
a = []
a += [None]*m
b = []
b += [a*n]
return b
答案 0 :(得分:3)
通常,这样做:
def none_board(n, m):
return [[None for _ in range(m)]
for _ in range(n)]
代码
l1 += l2
相当于
l1.extend(l2)
不
l1.append(l2)
答案 1 :(得分:0)
除了@ jonrsharpe的回答之外,我想说,不要使用*
运算符来创建多维列表。当你写a = [None] * 3
时,它完全可以并且创建一个3 None
的列表。但是当你写b = [a] * 2
时,它确实是一个2x3列表,但是2行会引用相同的内存位置,因为a
是一个引用,它将被复制到每一行。< / p>
例如:
>>> a = [None] * 3
>>> print a
[None, None, None]
>>> b = [a] * 2
>>> print b
[[None, None, None], [None, None, None]]
>>> a[0] = 0
>>> print a
[0, None, None]
>>> print b
[[0, None, None], [0, None, None]]
>>> b[0][1] = 1
>>> print b
[[0, 1, None], [0, 1, None]]
因此a[0][0]
和a[1][0]
引用相同的位置,更改a
中的值会在多个位置更改b
,这是意外的。
仅当列表中的项目是基本类型时,才使用*
运算符创建列表。