python中的'any()'或'all()'函数

时间:2015-03-12 18:29:02

标签: python

有没有办法检查两个条件?例如,

a=np.array([1,2,3,4,5,6,7,8])    
if any(a != 0 and a!=1)==True:
    do something

编辑:提供答案。无需任何更多输入。干杯

3 个答案:

答案 0 :(得分:2)

您需要使用包含布尔值的生成器对象或iterable。下面的生成器表达式仅包含true和false,具体取决于项目是否为1以外的数字和零。

if any(i != 0 and i != 1 for i in a):
    print "I'll do something here"

问题是,你试图测试数组是否不等于零和一,因此传递一个布尔而不是一个可迭代或生成器。您想测试单个值而不是数组本身。

答案 1 :(得分:0)

Numpy是一种矫枉过正的行为,而any()是无用的。请改用Set

if set(arr) - set([1,2]):
    do something

答案 2 :(得分:0)

如果您只想对a的所有不是(例如)0或1的元素执行某些操作,您可以先过滤数组:

for element in filter(lambda x: x != 0 and x != 1, array):
    #dosomething with element

或者,如果您不习惯使用匿名函数,那么对于更易读的版本:

def func(a):
    return a != 0 and a != 1

for element in filter(func, array):
    #dosomething with element