Python 变异二维表
我正在尝试制作一个更高级的Tic-Tac-Toe程序,其中包含“无限”行数。 但当我尝试改变列表时,它会改变整个列,而不是一个点Python 变异二维表,python,list,multidimensional-array,Python,List,Multidimensional Array,我正在尝试制作一个更高级的Tic-Tac-Toe程序,其中包含“无限”行数。 但当我尝试改变列表时,它会改变整个列,而不是一个点 size = 4 board = size * [size*[' ']] board[0][1] = 'x' #output: #[[' ', 'x', ' ', ' '], # [' ', 'x', ' ', ' '], # [' ', 'x', ' ', ' '], # [' ', 'x', ' ', ' ']] 如何解决这个问题?之所以出现这种情况,是因为每行
size = 4
board = size * [size*[' ']]
board[0][1] = 'x'
#output:
#[[' ', 'x', ' ', ' '],
# [' ', 'x', ' ', ' '],
# [' ', 'x', ' ', ' '],
# [' ', 'x', ' ', ' ']]
如何解决这个问题?之所以出现这种情况,是因为每行的内部列表都是重复的同一个对象 你可以把它改成
board = [
[' ']*size
for _ in range(size)
]
或者使用双重列表
size = 4
board = [
[' ' for _ in range(size)]
for _ in range(size)
]
board[0][1] = 'x'
print(board)
两者都生产什么
[[' ', 'x', ' ', ' '], [' ', ' ', ' ', ' '], [' ', ' ', ' ', ' '], [' ', ' ', ' ', ' ']]
之所以发生这种情况,是因为每行的内部列表都是重复的同一个对象 你可以把它改成
board = [
[' ']*size
for _ in range(size)
]
或者使用双重列表
size = 4
board = [
[' ' for _ in range(size)]
for _ in range(size)
]
board[0][1] = 'x'
print(board)
两者都生产什么
[[' ', 'x', ' ', ' '], [' ', ' ', ' ', ' '], [' ', ' ', ' ', ' '], [' ', ' ', ' ', ' ']]
感谢@Pynchia击败我找到答案。这是我的代码版本。我认为您遇到的问题是您创建列表的方法造成的 尺寸=4 创建列表列表的简单方法 板=[size*['']用于范围4中的i] 电路板[0][1]=“x” 印刷板
输出将如预期的那样。感谢@Pynchia在答案上击败了我。这是我的代码版本。我认为您遇到的问题是您创建列表的方法造成的 尺寸=4 创建列表列表的简单方法 板=[size*['']用于范围4中的i] 电路板[0][1]=“x” 印刷板
输出将如预期一样。非常感谢您的快速响应!不客气。如果它有助于/解决你的问题,请投票/接受我的答案我很愿意,但我的分数太低,无法投票给你的答案非常感谢您的快速回复!不客气。如果它有助于/解决您的问题,请投票/接受我的答案我很愿意,但我的分数太低,无法投票给您的答案:而且用手机打字很糟糕。非常感谢而且用手机打字很糟糕。非常感谢!