$ python -m timeit -s"L=[None,None,None]" "all( v is None for v in L )"
100000 loops, best of 3: 1.52 usec per loop
$ python -m timeit -s"L=[None,None,None]" "not any(L)"
1000000 loops, best of 3: 0.281 usec per loop
$ python -m timeit -s"L=[None,1,None]" "all( v is None for v in L )"
100000 loops, best of 3: 1.81 usec per loop
$ python -m timeit -s"L=[None,1,None]" "not any(L)"
1000000 loops, best of 3: 0.272 usec per loop
如果
l
的所有元素都是None
,则返回True
注意
l.count(None) == len(l)
要快得多,但要求l
是一个实际的list
,而不仅仅是一个iterable。如果
my_list
的所有项都是错误的,则返回True
。编辑:由于match对象总是严格的,并且
None
是错误的,因此这将给出与手头案例的all(x is None for x in my_list)
相同的结果。如gnibbler's answer所示,使用any()
是迄今为止更快的替代方法。因为Match对象永远不会求值为false,所以只使用
not any(L)
就可以了,而且要快得多相关问题 更多 >
编程相关推荐