【问题标题】:Returning the last element in a list larger than some threshold返回列表中大于某个阈值的最后一个元素
【发布时间】:2018-01-30 04:34:40
【问题描述】:

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

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

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

我尝试执行一个 for 循环并查找索引,但除了得到意想不到的结果之外,我觉得我遇到了一些麻烦,并认为可能有更简单的方法来解决它。

谢谢。

【问题讨论】:

标签: python list loops element threshold


【解决方案1】:

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)

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

【讨论】:

    【解决方案2】:

    你可以试试:

    >>> 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
    

    【讨论】:

      猜你喜欢
      • 2016-01-30
      • 1970-01-01
      • 1970-01-01
      • 2023-04-02
      • 1970-01-01
      • 1970-01-01
      • 2013-07-01
      • 2013-04-30
      • 1970-01-01
      相关资源
      最近更新 更多