您可以使用filter方法:
>>> lst = [1, 2, 3, 4, 5]
>>> filter(lambda x: x % 2 == 0, lst)
[2, 4]
或列表理解:
>>> lst = [1, 2, 3, 4, 5]
>>> [x for x in lst if x %2 == 0]
[2, 4]
要查找单个元素,可以尝试:
>>> next(x for x in lst if x % 2 == 0)
2
尽管如果没有匹配项将引发异常,因此您可能希望将其包装在try / catch中。方括号()使之成为生成器表达式,而不是列表理解。
就我个人而言,尽管我只是使用常规的过滤器/理解并采用第一个元素(如果有)。
如果什么也没找到,就会引发异常
filter(lambda x: x % 2 == 0, lst)[0]
[x for x in lst if x %2 == 0][0]
这些返回空列表
filter(lambda x: x % 2 == 0, lst)[:1]
[x for x in lst if x %2 == 0][:1]