如何检查列表中每个项目的“if condition”

时间:2016-05-24 10:26:24

标签: python design-patterns

我正在尝试针对一组非常具体的规则检查某个列表。 在这个特定的例子中,我有一个退出代码列表,我想检查测试是否失败。如果其中一个退出代码不是0,则测试失败。

我目前的实施:

for exit_code in result_list:
    if exit_code is not 0:
        raise TestFailed

问题:是否可以将前两行填入一行?这样做是否可取?

2 个答案:

答案 0 :(得分:5)

您可以使用any

if any(exit_code != 0 for exit_code in result_list):
    raise TestFailed

请注意,上述方法假设您还要检查等同于布尔False的值(例如NoneFalse!)。如果您确定result_list仅包含数字,则可以将其缩短一点:

if any(result_list):
    raise TestFailed

答案 1 :(得分:4)

你也可以像这样使用anyall

>>> any(exit_code !=0 for exit_code in result_list)
True
>>> all(exit_code==0 for exit_code in result_list)
False

因为1是True,而python中的0是假的。

any(result_list)将尝试查找任何非0(真)

的1个元素