Python单线程回答:这些函数中的任何一个输入都返回True吗?

时间:2014-07-28 09:35:40

标签: python python-2.7

目标:是否有内置的Python函数(或单行程序)将向函数提交参数,但只有在函数第一次返回True之前?我希望能够回答这个问题

  

" 这些输入中的任何是否会为此功能返回True?"

使用这些输入时,我并不特别关心功能的结果。

如果传递的任何True项目为iterable,则any函数会返回Truemap函数将参数应用于函数并返回所有这些函数调用的结果。

所以我正在寻找两者之间的东西。 any仅适用于iterable,因此与函数无关(除非我想map函数的所有参数);并且map并不是我想要的,因为它在所有输入上执行功能。

2 个答案:

答案 0 :(得分:3)

any是"懒惰",只要return的第一个元素评估为iterableTrue就会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)