检查列表以查看元素是否大于指定数量

时间:2018-10-10 19:45:06

标签: python python-3.x

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

所以

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

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

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

4 个答案:

答案 0 :(得分:5)

使用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将在其传递的第一个true元素上终止,因此,不执行任何虚假迭代,这使其优于max或列出必须始终进行迭代的基于理解的方法整个清单。但是,渐近地,它的时间复杂度当然仍然是线性的。

此外,您不应该掩盖list之类的内置名称。

答案 1 :(得分:1)

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

if max(list) > x:
    ...

您还可以使用 list comprehensions ({{},使用单行代码使列表中的所有所有元素列表大于x 3}}):

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

此代码生成greater中大于list的所有元素的列表x。您可以看到负责此操作的代码:

[i for i in list if i > x]

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

答案 2 :(得分:0)

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

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

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

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

答案 3 :(得分:0)

您可以使用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