这里最好的答案是使用all() http://docs.python.org/library/functions.html#all,这是这种情况的内置函数。我们将其与生成器表达式 https://www.youtube.com/watch?v=t85uBptTDYY干净高效地产生您想要的结果。例如:
>>> items = [[1, 2, 0], [1, 2, 0], [1, 2, 0]]
>>> all(flag == 0 for (_, _, flag) in items)
True
>>> items = [[1, 2, 0], [1, 2, 1], [1, 2, 0]]
>>> all(flag == 0 for (_, _, flag) in items)
False
注意all(flag == 0 for (_, _, flag) in items)
直接等价于all(item[2] == 0 for item in items)
,在这种情况下阅读起来会更好一点。
并且,对于过滤器示例,列表理解(当然,您可以在适当的情况下使用生成器表达式):
>>> [x for x in items if x[2] == 0]
[[1, 2, 0], [1, 2, 0]]
如果你想检查至少一个元素是否为 0,更好的选择是使用any() http://docs.python.org/library/functions.html#any哪个更具可读性:
>>> any(flag == 0 for (_, _, flag) in items)
True