在这个场景中,有一个名为 board 的嵌套列表,并将其传递给该函数,我想对列表中的内容进行一些修改。
但是,在此过程中,我发现通过将变量分配给空列表实际上做了一些奇怪的事情并且板列表上的任何修改都不会影响原来的板功能之外。这就是我的意思:
(具体功能并不重要)
这是修改列表中的特定插槽,它可以正常工作,确实影响原始电路板。
def move_up(board):
board[1][2] = '.'
这也很好,因为技术上附加修改列表,影响原始板。
def move_up(board):
board.append(['.', 'F', '*', 'F', '.'])
然而,这并不起作用。这不会影响原始电路板,我想知道原因。 board 变量显示为灰色,几乎感觉就像通过执行= [],它将变量重置为其他东西,一个新对象,但我不确定为什么。
def move_up(board):
board = []
board = [[1,2],[3,4]]
board[1][1] = 5
或者,这是范围的吗?请解释一下这在Python中是如何工作的,谢谢!
答案 0 :(得分:0)
在move_up
的缩进块中," board"是给出参数的 local 名称。可能有一个名为" board"在你的程序中的其他地方或可能没有。你不会期望Python能够找到它并为你修改它,你也不希望它。你的功能完全等同于这个:
def move_up(x):
x = []
x = [[1,2], [3,4]]
x[1][1] = 5
列表有一个名为clear
的函数,它从列表中删除所有元素而不创建新对象,以及一个名为extend
的函数,它按元素追加到列表元素。
def move_up(x):
x.clear()
x.extend([[1,2], [3,4]])
x[1][1] = 5
会做你想做的事。