首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从python的多维列表中提取列表?

如何从python的多维列表中提取列表?
EN

Stack Overflow用户
提问于 2019-07-30 06:43:03
回答 1查看 132关注 0票数 0

我知道如何使用索引从简单列表中提取元素,但我不知道如何从另一个列表中提取一个列表。

这是我需要的地方:我在玩游戏中的蛇游戏。我大部分时间都在玩游戏,但我很难让游戏画出蛇的尾巴。

下面是我的代码的工作原理:我一直在为图形使用pygame.draw。“蛇”从一个带有x和y坐标的盒子开始。食物还有另一对x和y坐标(用posx和posy变量表示,以区别于蛇头部使用的x和y变量)。我有游戏保存所有以前的坐标蛇到一个列表,它做得很好(我通过让游戏打印出来它所保存的)。我这部分的代码是:

代码语言:javascript
运行
复制
path.insert(0,(x,y))

“路径”是我用来跟踪蛇路径的列表的名称。

我可以四处走动,吃没有问题的食物(除了我的游戏有点反应迟钝这一事实之外),问题是如果我试图实现代码来描绘蛇的故事。

蛇的长度(它吃了多少“食物”)被保存在一个简单的变量‘长度’。我写了这个代码来画蛇的故事:

代码语言:javascript
运行
复制
if length>0:
        for i in range(length-1):
            pygame.draw.rect(mainWindow, (255,255,255),(path[i], snakeSize,snakeSize))

请原谅最后一行的包袱。

我以为这会把个人的x,y列表从“路径”列表中拉出来。但是如果我吃了一片食物,除了出现在一个新的、随机的地点之外,什么也不会发生。如果我吃了第二个,游戏就会冻结,我会收到一条错误信息,上面写着:

代码语言:javascript
运行
复制
TypeError: Rect argument is invalid

我想我不喜欢把x和y坐标从“路径”中拉出来。我不知道如何从另一个列表中提取单个元素。

而且,我不明白为什么当我第一次吃东西的时候什么都没有发生。我所知道的是,如果我把配方从长度-1改为长度,那么我就会在吃东西的时候立即冻僵。它似乎不喜欢长度等于1,我也不知道为什么。

EN

Stack Overflow用户

回答已采纳

发布于 2019-07-30 07:04:55

length-1面临的问题是,当您执行for i in range(length-1)时,当游戏开始时,我猜想length等于1,所以length-1等于0,循环根本不执行,因此不会产生错误。

因此,由于我们将很快修复该错误,首先将循环更改为for i in range(length)

至于您的错误,根据您的信息,path是这样的:

代码语言:javascript
运行
复制
[(1, 2), (4, 1), (6, 4)]

现在让我们假设i=1。通过做path[i],你可以得到(4, 1)。所以这意味着你要传递到's last argument

代码语言:javascript
运行
复制
((4, 1), snakeSize, snakeSize)

但它预计将有4元组的独立测试。所以你有两种方法可以这样做:

  1. 只需按元素传递它所期望的元素。类似于: (pathi,pathi,snakeSize,snakeSize) 这肯定是个四元组。
  2. 另一种方式,更多的“琵琶”,人们可能会说,是使用 operator to unpack元组。它看起来是这样的: (*pathi,snakeSize,snakeSize) 为了理解这一点,让我们看一个简单的例子:A= (4,6) >>>打印( (a,1,2) ) ((4,6),1,2) >>>打印(*a,1,2) (4,6,1,2) 再说一遍,这确实是一个四元组。
票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57265743

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档