在我的计算机入门课程中,我们刚刚编写了一个程序来创建井字游戏板,而我制作游戏板的方式就是这样;
game_board = [[', ', '], [', ', '],[', ', ']]
我在互联网上看到了类似的问题,并看到了这样写的另一种方式
different_board = [[' '] * 3 for row in range(3)]
我想知道如果将第二个书写的内容与第一个相比较,它们看起来是一样的还是看起来会有所不同?
答案 0 :(得分:2)
您可以问Python:
a = [[' ', ' ', ' '], [' ', ' ', ' '], [' ', ' ', ' ']]
b = [[' '] * 3 for row in range(3)]
print(a == b)
结果:
True
还请注意:
c = c = [[' '] * 3] * 3
d = [[' ' for _ in range(3)] for _ in range(3)]
print(a == c)
print(a == d)
它们看起来一样,但它们只是相似-尝试修改c
,您会看到原因:
c[0][1] = 'x'
print(c)
结果:
[[' ', 'x', ' '], [' ', 'x', ' '], [' ', 'x', ' ']]
这是对同一列表的三个引用! d
的定义是正确的,但是对于大多数程序员来说,* 3
为何有这个问题而for _ in range(3)
却没有这个问题,因此尚不清楚,因此,我将远离这些“有效”的定义。
您会看到自己的样子:
print(b)
结果:
[[' ', ' ', ' '], [' ', ' ', ' '], [' ', ' ', ' ']]