我喜欢Python的表现力。但是,我不能像我想的那样表达一切紧凑。例如,我经常写这个:
def is_everything_okay(some_array):
for s in some_array:
if not is_okay(s):
return False
return True
但这比Java更多Java。如何提高该代码段的表现力(以及可能的执行速度)?
答案 0 :(得分:5)
使用内置函数all()
:
all(is_okay(s) for s in some_array)
答案 1 :(得分:0)
只是填写Sven的答案* ... 2.7的文档:http://docs.python.org/library/functions.html#all
all(iterable)
如果iterable的所有元素都为true(或者iterable为空),则返回True。相当于:
def all(iterable): for element in iterable: if not element: return False return True
几乎是您展示的代码的精确副本......
因此,使用对(is_okay(s) for s in some_array)
形式的理解会创建由all()
如果没有专门的测试,你就不会知道哪个更快。