返回大于某个阈值的列表中的最后一个元素

时间:2018-01-30 04:34:41

标签: python list loops element threshold

假设我们在Python中有以下列表:

[1,2,3,4,5,4,6,3,1,9,4,3,8,4,2,3,4,4,1,8]

我们如何返回被视为>=4的最后一个元素?

我尝试做一个for循环并寻找索引,但觉得我经历了一些混乱,除了得到意想不到的结果,并认为可能有一个更简单的方法来解决它。

感谢。

2 个答案:

答案 0 :(得分:2)

使用lst撤消reversed,并致电next

next(i for i in reversed(lst) if i >= 4)
8

这是有效的,因为它只迭代它所需的最小量,以返回结果。这相当于:

for i in reversed(lst):
    if i >= 4:
        break

print(i)
8

经常会发生没有符合您条件的元素,因此next根本没有任何回报。在这种情况下,next返回一个StopIteration,您可以通过使用默认参数调用函数来避免这种情况 -

next((i for i in reversed(lst) if i >= 4), None)

如果没有元素符合条件None,则返回i >= 4

答案 1 :(得分:0)

您可以尝试:

>>> x = [1,2,3,4,5,4,6,3,1,9,4,3,8,4,2,3,4,4,1,8]
>>> x1 = []
>>> num = 4
>>> for i in x:
...     if i >= num:
...             x1.append(i)
...
>>> print(x1)
[4, 5, 4, 6, 9, 4, 8, 4, 4, 4, 8]
>>> max(x1)
9