查找符合条件的列表的最后一个元素
Find last element of a list that fits a critera
我有矩阵(列表的类型列表),我只想 select 符合我的条件的最后一行。具体来说,我有这个矩阵:
matrix = [
[[0], whatever0],
[[1], whatever1],
[[1, 0], whatever10],
[[1, 1], whatever11],
[[1, 2], whatever12],
[[1, 3], whatever13],
[[1, 4], whatever14],
]
并且我只想 select 最后一行 i 使得 len(matrix[i][0]) == 1,所以答案应该 return [[1],whatever1 ].
还没有找到如何回答这个具体问题。谢谢。
你可以这样做:
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 and return only the elements that have len(e[0]) == 1
. Then with 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')
检查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"]
我有矩阵(列表的类型列表),我只想 select 符合我的条件的最后一行。具体来说,我有这个矩阵:
matrix = [
[[0], whatever0],
[[1], whatever1],
[[1, 0], whatever10],
[[1, 1], whatever11],
[[1, 2], whatever12],
[[1, 3], whatever13],
[[1, 4], whatever14],
]
并且我只想 select 最后一行 i 使得 len(matrix[i][0]) == 1,所以答案应该 return [[1],whatever1 ].
还没有找到如何回答这个具体问题。谢谢。
你可以这样做:
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 and return only the elements that have len(e[0]) == 1
. Then with 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')
检查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"]