Python的列表索引必须是整数,而不是元组“

2024-06-09 10:49:28 发布

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

我正在研究一个机器人在一个8×8的二维网格房间里移动,其中一部分是初始化传感器,传感器由机器人周围最近的5块瓷砖组成。

self.sensors = [0 for x in xrange(5)]

在这里,我创建了一个由5个元素组成的空数组。

但是当我试图设置如下传感器的值时:

    if self.heading == 'East':
        self.sensors[0] = self.room[self.x, self.y-1]
        self.sensors[1] = self.room[self.x+1, self.y-1]
        self.sensors[2] = self.room[self.x+1, self.y]
        self.sensors[3] = self.room[self.x+1, self.y+1]
        self.sensors[4] = self.room[self.x, self.y+1]

我得到的错误是“列表索引必须是整数,而不是元组”。


Tags: inself网格元素forif机器人传感器
3条回答

self.room[self.x, self.y-1]用元组索引self.room。如果是不规则数组,则必须使用self.room[self.x][self.y-1]

问题来自你的self.room

因为:

self.room[self.x, self.y-1]

是相同的:

self.room[(self.x, self.y-1)]

这就是你的tuple错误。

有两种可能性:

  • self.room是一个二维数组,这意味着您可能是指:

    self.room[self.x][self.y-1]
    
  • 你想切self.room

    self.room[self.x:self.y-1]
    

请提供有关self.room的详细信息。

你说self.room是一个“二维网格”--我假设它是一个列表列表。在这种情况下,您应该以

self.room[self.x][self.y-1]

而不是用对self.x, self.y-1索引外部列表。

相关问题 更多 >