2012-01-05 40 views
2

我有一个名为inventory []的列表或数组,它在任何给定时间最多有15个条目。我需要测试这些条目是否等于零,如果任何一个条目等于零,请执行一些操作。什么是有效的方式做到这一点没有做Python 3测试列表中的一系列项目

if inventory[0] == 0 or inventory[1] == 0 or inventory[2] == 0... 

等?

+0

“测试,如果这些条目是等于零,如果任何一个条目等于零,做点什么。“令人困惑。 “任何这些条目”和“任何一个条目”之间有什么区别?做什么事情 - 一般情况下,或者特别是某个/某些/全部为零的项目,您需要知道列表中零条目的位置(索引)? – 2012-01-05 00:49:44

回答

2

Python的内置any()函数是完美的。如果任何元素为真(非伪造),则需要可迭代的参数并返回True

if any(item == 0 for item in inventory): 
    # do something 

也有类似的功能叫做all(),将返回True如果所有元素都是如此。

0

利用all功能,而且0评估为False的事实:

if not all(inventory): 
    ... 

编辑:假设inventory只包含数字当然

+0

脆弱的,可能会打破例如'库存= ['垃圾',[],'鸡蛋]]当然是 – wim 2012-01-05 00:40:39

+0

@ wim;我假设'inventory'是一个整数列表(这就是为什么这里有一个0) – 2012-01-05 00:43:42

+0

最好不要做出这样的假设,如果不需要的话,或者至少在你的答案中提到假设。 – wim 2012-01-05 00:46:02

5

,为您简单的情况下,我想你可能只是这样做:

if 0 in inventory: 
    # do something 

对于这种类型的薄更普遍的情况下g,您可以使用any函数(docs)。

if any([item == 0 for item in inventory]): 
    # do something 
+1

+1'库存中的if 0'。有时候会忘记更简单的事情:) – 2012-01-05 00:40:12

0

尝试了这一点:

inventory=[1,2,3,4,0] 
if 0 in inventory: 
print "There is 0 in the list" 

输出: 有0列表

相关问题