增加数组元素测试的表现力

时间:2012-02-07 22:20:23

标签: python readability performance

我喜欢Python的表现力。但是,我不能像我想的那样表达一切紧凑。例如,我经常写这个:

  def is_everything_okay(some_array):
    for s in some_array:
      if not is_okay(s):
        return False
    return True

但这比Java更多Java。如何提高该代码段的表现力(以及可能的执行速度)?

2 个答案:

答案 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()

解析的iterable。

如果没有专门的测试,你就不会知道哪个更快。

  • 因为我正在尝试编写一个我正在学习的Python课程,需要回答一些问题!