从列表中检索一系列值
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]
大多数其他答案所建议的最简单的方法可能是:
[x[1] for x in a[-3:]]
但是,为了练习和习惯解决涉及列表(和其他)的问题的其他方法,最好阅读 map
、filter
和 reduce
做(假设它还不知道)。一个小的描述是here。
我想我会把这个答案留在这里以添加到其他答案中。这是使用 map
的另一种方法。
[*map(lambda x: x[1], a[-3:])]
Output: [3, 80, 9]
希望这对您有所帮助。
我想知道我是否有这样的列表列表:
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]
大多数其他答案所建议的最简单的方法可能是:
[x[1] for x in a[-3:]]
但是,为了练习和习惯解决涉及列表(和其他)的问题的其他方法,最好阅读 map
、filter
和 reduce
做(假设它还不知道)。一个小的描述是here。
我想我会把这个答案留在这里以添加到其他答案中。这是使用 map
的另一种方法。
[*map(lambda x: x[1], a[-3:])]
Output: [3, 80, 9]
希望这对您有所帮助。