我列了一张这样的单子:
mapxy = [[0 for x in range(16)] for x in range(16)]
我从另一个普通列表中添加如下对象:
for y in range(0, 16):
for x in range(0, 16):
mapxy[x][y] = mapList[o]
然后我想在列表中向下移动一个对象,然后在列表中左右移动第一个索引mapxy[x+1][y]
mapxy.pop(f_pos_x)
mapxy.insert(f_pos_x + 1, ["1"])
f_pos_x += 1
(这也没有像我所希望的那样起作用,它在两个列表之间结束了/在第一个列表中创建了另一个列表,而不是像我所希望的那样插入到内部列表中。)
而且在y
:mapxy[x][y+1]
上下。你知道吗
我希望它看起来如何: 原件
mapxy = [[" ", " ", "1"," "][" ", " ", " "," "][" ", " ", " "," "][" ", " ", " "," "]]
当我向右按时:
mapxy = [[" ", " ", " ","1"][" ", " ", " "," "][" ", " ", " "," "][" ", " ", " "," "]]
当我按下按钮:
mapxy = [[" ", " ", " "," "][" ", " ", " ","1"][" ", " ", " "," "][" ", " ", " "," "]]
使用元组作为键的字典:
实际上,您可以避免初始化并检查是否设置了元素或使用了默认值。关于这个默认值,也要考虑
None
。使用此命令,您可以轻松地“移动”元素:mapxy
是一个列表列表(显然所有“cells”都初始化为单个项mapList[o]
,这有点奇怪)。所以pop
和insert
一次将删除并分别添加一个完整的列表,而不是单个项。你知道吗你说你想“移动”一个项目,但不是什么应该取代它。如果您只想复制项目,那么它显然只是:
但是如果前面的
map[x][y]
必须用其他的东西填充,那么你当然也必须分配给它。与沿着y
而不是沿着x
移动完全相同。你知道吗这是完整的脚本,我想你想要的。但在我粘贴它逃跑之前,有两件事值得一提。1你需要在原地交换物品。2您需要考虑超出范围的索引错误。你知道吗
首先,我设想使用
deque
个具有maxlen
字段集的deques。deque
可从collections
库获得。所以要向左移动,你在右边弹出,在左边插入,向右移动,你在左边弹出,在右边附加。但后来我有了另一个主意。你知道吗坚持使用列表列表,在适当的位置交换项并避免超出范围的错误,因为新计算的索引位于包含项的列表长度的非负整数模集内。你知道吗
别说了。在python中就地交换,给定:
您需要:
导致:
下面的脚本跟踪两个索引,
x
对应于要向左和向右移动的项的索引,字符串,y
对应于包含要向左和向右移动的项的内部列表项的索引(内部列表本身是上下移动的)。我指的是位置。所以x
指向字符串,y
指向列表。你知道吗要在包含列表中上下移动,只需知道要移动的列表的索引
y
。要左右移动项(字符串),您需要知道包含列表索引y
和项索引x
。你知道吗相关问题 更多 >
编程相关推荐