查找符合cri的列表的最后一个元素

2024-09-30 14:31:05 发布

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

我有矩阵(列表的类型列表),我只想选择最后一行符合我的标准。具体来说,我有一个矩阵:

matrix = [
         [[0], whatever0],
         [[1], whatever1],
         [[1, 0], whatever10],
         [[1, 1], whatever11],
         [[1, 2], whatever12],
         [[1, 3], whatever13],
         [[1, 4], whatever14],
         ]

我只想选择最后一行I,这样len(矩阵[I][0])==1,所以答案应该返回[[1],whatever1]。你知道吗

还没有找到如何回答那个具体问题。非常感谢。你知道吗


Tags: 答案类型列表标准len矩阵matrixwhatever1
3条回答

检查this

>>> matrix = [
...          [[0], "whatever0"],
...          [[1], "whatever1"],
...          [[1, 1], "whatever11"],
...          [[1, 2], "whatever12"],
...          [[1, 3], "whatever13"],
...          [[1, 4], "whatever14"]
...          ]

res=list(filter(lambda x: x[0][0]>0, matrix))[-1]

res包含每个矩阵项的第一项的最后一个元素(粗体)

。。。[[0],“whatever0”]

。。。[[1],“whatever1”]

。。。[[1,1],“whatever11”]

。。。[[1,2]**,“whatever12”]

。。。[[1,3]**,“whatever13”]

。。。[[1,4]**,“whatever14”]

你可以这样做:

matrix = [
    [[0], 'whatever0'],
    [[1], 'whatever1'],
    [[1, 0], 'whatever10'],
    [[1, 1], 'whatever11'],
    [[1, 2], 'whatever12'],
    [[1, 3], 'whatever13'],
    [[1, 4], 'whatever14'],
]

result = next((e for e in reversed(matrix) if len(e[0]) == 1), None)
print(result)

输出

[[1], 'whatever1']

解释

首先使用reversed向后迭代列表,只返回具有len(e[0]) == 1的元素。然后用next只得到第一个结果。你知道吗

简单地向后迭代是最有效的:

for i in range(len(matrix), -1, -1):
    if len(matrix[i][0]) == 1:
        print(matrix[i])
        break
else:
    print('No matching row found')

相关问题 更多 >