将python的所有元素提前列出一个元素

2024-04-20 05:35:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在制作一个简单的蛇式游戏,通过一个二维列表(/array)移动 我还有一个列表,上面有蛇的每一部分的坐标。它基本上是工作的,只是数组的第一个和第二个元素总是一样的,我不知道为什么。你知道吗

我这样做的方法是向后遍历列表,并从上一个元素中获取值以应用于当前元素。你知道吗

例如,列表中的最后一个元素被设置为倒数第二个元素的值。第二个倒数第三个倒数第二个倒数第三个倒数第三个倒数第三个倒数第二个倒数第三个倒数第三个倒数第三个倒数

代码如下:

while i < playerLength:
    x = playerSections[-i-1][0]
    y = playerSections[-i-1][1]
    playerSections[-i] = [x,y]
    i+=1

我知道一些简单的解决方法来避免这个问题(例如,让循环提前终止一次迭代),但是我想知道为什么这个方法不起作用,所以如果其他人能发现这个bug,我会更好地理解它。你知道吗


Tags: 方法代码游戏元素列表数组arraybug
2条回答

您只需删除最后一个元素并在前面添加一个,如下所示:

l = [[1,1],[2,1],[2,2]]
l.pop[-1]
l.insert(0, [0,1])

这将删除最后一个元素,并在前面插入一个新的元素,以便修改索引。你知道吗

另一种方法(删除第一个元素并添加到末尾)的工作方式如下:

l.pop[0]
l.append([2,3])

备选方案:

我刚刚遇到了collections.deque,它提供了一个链接的双端列表,其中有专门的函数来添加或删除两边的元素。如果您不在中间元素上执行操作,可能会更快,这应该在您的案例中给出。你知道吗

https://docs.python.org/2/library/collections.html#collections.deque

马蒂恩·皮尔斯说得很好。你不需要移动你阵法中蛇的整个长度,你只需要移除蛇的最后一部分并将它移到前面。你知道吗

相关问题 更多 >