Python 关于更新名单
我正在尝试更新一个二维列表,用于跟踪控制台游戏中的某个阶段。我使用以下代码进行更新:Python 关于更新名单,python,python-2.7,Python,Python 2.7,我正在尝试更新一个二维列表,用于跟踪控制台游戏中的某个阶段。我使用以下代码进行更新: def updateBoard(): stage[bird[0]][3] = "#" #print(bird) Debugging #print(stage) Debugging 这段代码用于在新更新时刷新板: def flushBoard(): stage = 0 stage = [[0 for x in range(8)] for y in range(8)]
def updateBoard():
stage[bird[0]][3] = "#"
#print(bird) Debugging
#print(stage) Debugging
这段代码用于在新更新时刷新板:
def flushBoard():
stage = 0
stage = [[0 for x in range(8)] for y in range(8)]
#print(stage) Debugging
用于打印电路板的代码段如下所示:
def printBoard():
for row in stage:
for square in row:
print(square, end="")
print("")
print("")
print(stage)
我遇到的问题是,在刷新然后更新之后,我在新的位置上得到了“bird”,但我在前一个位置也得到了它,即使在刷新列表之后。有什么原因吗?注意:stage是在文件顶部声明的全局变量,而函数在while循环中以正确的顺序运行。(刷新、更新、打印)注意:我使用future获得正确的打印功能。如果
stage
是一个全局变量,则必须使用global
关键字。现在,您只是在flushBoard
函数的范围内声明并创建一个新的stage
def flushBoard():
global stage # use globally defined stage in this function
stage = [[0 for x in range(8)] for y in range(8)]
在其他方法中,只要访问或修改stage
,就不需要global
话虽如此,您也可以使用[:]
切片表示法修改列表,用新值替换整个内容。这样,您就不需要global
def flushBoard():
stage[:] = [[0 for x in range(8)] for y in range(8)]
如果
stage
是全局变量,则必须使用global
关键字。现在,您只是在flushBoard
函数的范围内声明并创建一个新的stage
def flushBoard():
global stage # use globally defined stage in this function
stage = [[0 for x in range(8)] for y in range(8)]
在其他方法中,只要访问或修改stage
,就不需要global
话虽如此,您也可以使用[:]
切片表示法修改列表,用新值替换整个内容。这样,您就不需要global
def flushBoard():
stage[:] = [[0 for x in range(8)] for y in range(8)]
我认为在flushBoard中,您使用的是本地舞台,而不是全局舞台。这就是使用赋值时发生的情况。你应该做:
def flushBoard():
global stage
stage = 0
stage = [[0 for x in range(8)] for y in range(8)]
#print(stage) Debugging
我建议阅读我认为在flushBoard中,您使用的是本地舞台,而不是全局舞台。这就是使用赋值时发生的情况。你应该做:
def flushBoard():
global stage
stage = 0
stage = [[0 for x in range(8)] for y in range(8)]
#print(stage) Debugging
我建议阅读那些不是python文档,我的朋友,这些是:那些不是python文档,我的朋友,这些是: