Python 变异二维表

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', ' ', ' ']] 如何解决这个问题?之所以出现这种情况,是因为每行

我正在尝试制作一个更高级的Tic-Tac-Toe程序,其中包含“无限”行数。 但当我尝试改变列表时,它会改变整个列,而不是一个点

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” 印刷板
输出将如预期一样。

非常感谢您的快速响应!不客气。如果它有助于/解决你的问题,请投票/接受我的答案我很愿意,但我的分数太低,无法投票给你的答案非常感谢您的快速回复!不客气。如果它有助于/解决您的问题,请投票/接受我的答案我很愿意,但我的分数太低,无法投票给您的答案:而且用手机打字很糟糕。非常感谢而且用手机打字很糟糕。非常感谢!