我正在尝试检查列表中的特定元素是否大于设置值。
所以
x=22
list=[10,20,30]
# check if anything in list is greater than x
# do something to the list
我只是不确定在这种情况下要使用哪些命令来检查每个列表元素,或者是否甚至可以一行检查。
答案 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