目标:是否有内置的Python函数(或单行程序)将向函数提交参数,但只有在函数第一次返回True
之前?我希望能够回答这个问题
" 这些输入中的任何是否会为此功能返回
True
?"
使用这些输入时,我并不特别关心功能的结果。
如果传递的任何True
项目为iterable
,则any
函数会返回True
。 map
函数将参数应用于函数并返回所有这些函数调用的结果。
所以我正在寻找两者之间的东西。 any
仅适用于iterable
,因此与函数无关(除非我想map
函数的所有参数);并且map
并不是我想要的,因为它在所有输入上执行功能。
答案 0 :(得分:3)
any
是"懒惰",只要return
的第一个元素评估为iterable
,True
就会map
。但是,在Python 2.x *中,function
会构建结果列表,在返回之前将iterable
应用于from itertools import imap
中的所有内容。
但是有一个替代方法:itertools.imap
,它返回一个迭代器而不是一个列表,恢复延迟评估。一旦你:
any(imap(function, iterable))
你的单行是:
map
* 请注意,itertools.imap
已经返回迭代器in Python 3.x,因此{{1}}不再可用。
答案 1 :(得分:2)
使用理解:
any(func(arg) for arg in args)