List of lists TypeError:列表索引必须是整数或切片,不能是元组



这是我的列表列表,我想打印一个特定的元素:

boxes_preds = [[1, 300, 400, 250, 350],[0, 450, 150, 500, 420]]
print(boxes_preds[..., 0:1])
我得到一个
TypeError: list indices must be integers or slices, not tuple

你的语法不正确,使用以下语法来获取列表中的元素:list_name[index_of_outer_list_item][index_of_inner_list_item]因此,如果你想让第一个列表的300在外部列表中:

boxes_preds[0][1]

这个应该可以。

索引多维列表

你可以把索引想象成以[y][x]形式书写的二维坐标。比如当嵌套列表表示一个2D矩阵时:

y / x
| 1, 300, 400, 250, 350
| 0, 450, 150, 500, 420

其中xy必须都是整数或用切片表示法表示:

boxes_preds = [[1, 300, 400, 250, 350],[0, 450, 150, 500, 420]]
print(boxes_preds[0][0])  # integer index for both
# 1
print(boxes_preds[-1][0:2])  # last of outer list, slice index for inner
# [0, 450]

使用元组对嵌套列表进行索引

有一种使用元组进行索引的方法。作为存储2d索引的数据结构,但不是作为括号内的元组:

coordinates_tuple = (1,1)  # define the tuple of coordinates (y,x)
y,x = coordinates_tuple  # unpack the tuple to distinct variables
print(boxes_preds[y][x])  # use those in separate indices
# 450

参见Python -使用元组作为列表索引。

省略号...

省略号(三个点)是一种特殊的语法元素中使用Numpy在Python或作为输出表示。

但是不允许作为list-index。下面的例子演示了错误:

boxes_preds = [[1, 300, 400, 250, 350],[0, 450, 150, 500, 420]]
print(boxes_preds[...])

输出:

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: list indices must be integers or slices, not ellipsis

:

  • Python Land Blog: Python省略号(三重点):它是什么,如何使用
  • 如何在Python中使用省略号切片语法?

你必须这样做:

boxes_preds = [[1, 300, 400, 250, 350],[0, 450, 150, 500, 420]]
print(boxes_preds[0][0:1])

boxes_preds[0]返回boxes_preds中的第一个列表,然后使用切片/索引访问该列表的元素。

访问boxes_preds后面的元素也可以这样做,例如访问boxes_preds[1]的第二个列表。

相关内容

  • 没有找到相关文章

最新更新