【发布时间】:2015-01-10 22:48:50
【问题描述】:
我目前正在制作一个简单的蛇式游戏,它在二维列表(/数组)中移动 我还有一个列表,其中包含蛇的每个部分的坐标。它大部分都在工作,只是数组的第一个和第二个元素总是相同的,我不知道为什么。
我这样做的方法是向后迭代列表并从前一个元素中获取值以应用于当前元素。
即。列表中的最后一个元素被设置为倒数第二个的值。然后倒数第二个设置为倒数第三个等等。
代码如下:
while i < playerLength:
x = playerSections[-i-1][0]
y = playerSections[-i-1][1]
playerSections[-i] = [x,y]
i+=1
我知道一些简单的解决方法来避免这个问题(例如,让循环更快地终止一次迭代)但我想知道为什么这不起作用,所以如果其他人能发现这个错误,我会更好地理解它。
【问题讨论】:
-
Python 索引的工作原理是从第一个(包括)到最后一个(不包括),即当您选择 a[1:4] 时,它会为您提供 a[1] a[2] 和 a[3].. ...如果这有意义
-
为什么不直接删除最后一个元素呢?你总是可以在开头插入一个新元素..
-
...那会简单得多!我一直在使用太多 Java,我忘记了其他语言中的列表有多灵活,所以这会减少最初预期的代码。
-
我发誓,曾经编码过蛇(用于学习目的)的单身人士都遇到过这个问题,并且总是得到 martjin 的答案。
标签: python arrays list for-loop