我是
Python新手,只是对Lambda表达非常感兴趣.我遇到的问题是从带有lambda过滤器的元素列表中找到一个且只有一个目标元素.理论上,当找到目标元素时,再也没有意义继续下去了.
使用for循环,打破循环非常简单,但是使用lambda呢?毕竟有可能做到这一点吗?我从谷歌搜索,但没有找到预期的解决方案
最佳答案 从
https://docs.python.org/3/library/functions.html#filter起
Note that
filter(function, iterable)
is equivalent to the generator
expression(item for item in iterable if function(item))
if function
is notNone
and(item for item in iterable if item)
if function is
None
.
所以在实践中你的lambda将不会应用于整个列表,除非你开始从中获取元素.因此,如果您只从此生成器请求一个项目,您将获得您的功能.
@编辑:
请求下一个你打电话的对象(gen)
lst = [1,2,3,4,5]
print(next(filter(lambda x: x%3==0, lst)))
输出3并且不会处理任何超过3的任何东西