【问题标题】:Check list to see if element greater than specified number [duplicate]检查列表以查看元素是否大于指定数字[重复]
【发布时间】:2018-10-10 19:45:06
【问题描述】:

我正在尝试检查列表中的特定元素是否大于设定值。

所以

x=22
list=[10,20,30] 

# check if anything in list is greater than x
# do something to the list

我只是不确定在这种情况下使用什么命令来检查每个列表元素,或者是否可以在一行中检查。

【问题讨论】:

  • 欢迎来到本站。不幸的是,不清楚你想要什么。请澄清:您是否只想知道列表是否包含大于给定值的元素?还是所有更大元素的列表?或者如果某个特定元素(比如 5 个元素中的第 3 个)更大?

标签: python python-3.x


【解决方案1】:

使用any,Python 的自然方式来检查一个条件是否适用于许多条件中的任何

x = 22 
lst = [10, 20, 30]  # do NOT use list as a variable anme

if any(y > x for y in lst):
    # do stuff with lst

any 将在它传递的可迭代对象的第一个真实元素处终止,因此,不会执行任何虚假迭代,这使其优于 max 或必须始终迭代整个列表的基于列表理解的方法。然而,渐近地,它的时间复杂度当然仍然是线性的。

另外,您不应该隐藏像 list 这样的内置名称。

【讨论】:

    【解决方案2】:

    您要求“如果列表中的 any 元素大于 x”。如果你只想要一个元素,你可以使用max()函数在列表中找到最大的元素,并检查它是否大于x

    if max(list) > x:
        ...
    

    您还可以使用 列表推导式 (here's a tutorial, if you want one) 使列表中的所有 元素列表大于x

    >>> x = 22
    >>> list = [10, 20, 30, 40]
    >>> greater = [i for i in list if i > x]
    >>> print(greater)
    [30, 40]
    

    此代码生成greater 中所有大于xlist 元素的列表。你可以看到负责这个的代码:

    [i for i in list if i > x]
    

    这意味着,“迭代 list,如果条件 i > x 对任何元素 i 为真,则将该元素添加到新列表中。最后,返回该新列表。”

    【讨论】:

      【解决方案3】:

      您可以使用filter 并过滤列表中大于22 的项目,如果 此过滤列表的len> 0,这意味着您的原始列表包含大于22 的值

      n = 22
      lst = [10,20,30]
      
      if len(list(filter(lambda x: x > n, lst))) > 0:
          # do something to lst
      

      【讨论】:

        【解决方案4】:

        列表理解将适合您的用例。

        In [1]: x=22
        
        In [2]: l=[10,20,30]
        
        In [3]: exist = [n for n in l if n > x]
        
        In [4]: if exist:
           ...:     print "elements {} are greater than x".format(exist)
           ...: 
        elements [30] are greater than x
        

        如果您的列表很长,请使用生成器,这样您就不必遍历列表的所有元素。

        In [5]: exist = next(n for n in l if n > x)
        
        In [6]: if exist:                          
            print "Element {} is greater than x".format(exist)
           ...:     
        Element 30 is greater than x
        

        【讨论】:

          猜你喜欢
          • 2018-01-31
          • 1970-01-01
          • 2016-05-12
          • 2021-10-17
          • 2015-10-06
          • 1970-01-01
          • 2019-09-24
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多