我很确定有一个常见的习惯用法,但我找不到Google搜索...
这是我想要做的(用Java):
// Applies the predicate to all elements of the iterable, and returns
// true if all evaluated to true, otherwise false
boolean allTrue = Iterables.all(someIterable, somePredicate);
如何在Python中完成“Pythonic”?
如果我能得到这个答案也会很棒:
// Returns true if any of the elements return true for the predicate
boolean anyTrue = Iterables.any(someIterable, somePredicate);
答案 0 :(得分:71)
你的意思是:
allTrue = all(somePredicate(elem) for elem in someIterable)
anyTrue = any(somePredicate(elem) for elem in someIterable)
答案 1 :(得分:7)
allTrue = all(map(predicate, iterable))
anyTrue = any(map(predicate, iterable))
答案 2 :(得分:1)
这是一个检查列表是否包含全零的示例:
all(v == 0 for v in x)
替代方案你也可以这样做:
unsigned int ReverseTetrads(unsigned int x)
{
// reverse tetrads ignoring leading zeros
x = (x << 16) | (x >> 16);
x = ((x << 8) & 0xff00ff00) | ((x >> 8) & 0x00ff00ff);
x = ((x << 4) & 0xf0f0f0f0) | ((x >> 4) & 0x0f0f0f0f);
// get rid of the leading zeros (which are now trailing zeros)
x >>= !(x & 0x0000ffff) * 16;
x >>= !(x & 0x000000ff) * 8;
x >>= !(x & 0x0000000f) * 4;
return x;
}
答案 3 :(得分:0)
你可以在Python中使用'all'和'any'内置函数:
all(map(somePredicate, somIterable))
此处somePredicate
是一个函数,all
将检查该元素的bool()是否为True。