如何操作 python 中的列表

how to manipulate a list in python

我只想问你关于在 python 中建造迷宫的学校练习。我们从一个已知的 (x,y) 点和 n*n 图开始。在每次递归中,我们应该为每对 (x,y) 创建一个 neighbouring_list ,它将包含该点的最近元素。 到目前为止,我已经编写了显示正确结果的代码,但我无法保存和操作从相邻列表中选择的新 x 和 y。它们以 (8,8) 的方式执行,我无法写出 x = 8 和 y = 8。你有什么想法吗?提前致谢!

if(x and y == 0):
    neighbouring_list = [((x + 1), y), (x, (y + 1))]
elif (x == (n - 1) and y == 0):
    neighbouring_list = [((x - 1), y), (x, (y + 1))]
elif (y == 0):
    neighbouring_list = [((x + 1), y), ((x - 1), y), (x, (y + 1))]
elif (y == (n - 1) and x == 0):
    neighbouring_list = [(x, (y - 1)), ((x + 1), y)]
elif (x == 0):
    neighbouring_list = [(x, (y + 1)), (x, (y - 1)), ((x + 1), y)]
elif (x == (n - 1) and y == (n - 1)):
    neighbouring_list = [(x, (y - 1)), ((x - 1), y)]
elif (x == (n - 1)):
    neighbouring_list = [((x - 1), y), (x, (y + 1)), (x, (y - 1))]
elif (y == (n - 1)):
    neighbouring_list = [(x, (y - 1)), ((x - 1), y), ((x + 1), y)]
else:
    neighbouring_list = [((x - 1), y), ((x + 1), y), (x, (y + 1)), (x, (y -         1))]

这是一个更简单的代码版本:

nlist = []
if x < n:
    nlist.append((x+1,y))
if y < n:
    nlist.append((x,y+1))
if x > 0:
    nlist.append((x-1,y))
if y > 0:
    nlist.append((x,y-1))

那应该更容易管理。

要将元组 (xin, yin) 解压为代码的 x, y,您可以简单地执行以下操作:

x, y = (xin, yin)

或者如果元组绑定到一个变量,比如坐标:

x, y = coordinates

这称为元组拆包。