从列表中检索一系列值

Retrieve a range of values from list

我想知道我是否有这样的列表列表:

a = [[43,76],[8,3],[22,80],[71,9]]

如果我想检索最后 3 个子列表中的第二个值,即从索引 1 到 3 的第二个值将是这样的:

a[1:3][1]:

3
80
9

不,这样评价的:

a[1:3][1] -> [[8, 3], [22, 80]][1] -> [22, 80]

请注意,:3 表示 索引 3(不包括它),所以实际上你的切片应该是 a[1:4],但是你想要最后三个 个子列表,而不是第二到第四个 个子列表,您应该使用负切片:a[-3:]。即使列表只能是 4 长,这也更清楚。

所以你想要[x[1] for x in a[-3:]]

如果您想像示例输出中那样打印它们:

>>> for x in a[-3:]:
...     print(x[1])
... 
3
80
9

您可以在此处使用负切片

print(*[x[1] for x in a[-3:]],sep='\n') #a[-3:] gives last 3 elements

我的 2c:

[x[1] for x in a[-3:]]

[3, 80, 9]

Demo

大多数其他答案所建议的最简单的方法可能是:

[x[1] for x in a[-3:]]

但是,为了练习和习惯解决涉及列表(和其他)的问题的其他方法,最好阅读 mapfilterreduce 做(假设它还不知道)。一个小的描述是here

我想我会把这个答案留在这里以添加到其他答案中。这是使用 map 的另一种方法。

[*map(lambda x: x[1], a[-3:])]

Output: [3, 80, 9]

希望这对您有所帮助。