Python3测试列表中的一系列项
我有一个名为inventory[]的列表或数组,它在任何给定时间最多有15个条目。我需要测试这些条目中是否有一个等于零,如果有一个条目等于零,请做些什么。不这样做的有效方法是什么Python3测试列表中的一系列项,python,arrays,list,if-statement,Python,Arrays,List,If Statement,我有一个名为inventory[]的列表或数组,它在任何给定时间最多有15个条目。我需要测试这些条目中是否有一个等于零,如果有一个条目等于零,请做些什么。不这样做的有效方法是什么 if inventory[0] == 0 or inventory[1] == 0 or inventory[2] == 0... 等等?Python的内置函数非常适合于此。它将iterable作为参数,如果任何元素为True(非falsy),则返回True 还有一个类似的函数名为all(),如果所有元素都为True
if inventory[0] == 0 or inventory[1] == 0 or inventory[2] == 0...
等等?Python的内置函数非常适合于此。它将iterable作为参数,如果任何元素为True(非falsy),则返回True
还有一个类似的函数名为
all()
,如果所有元素都为True,它将返回True
。利用all
函数,并且0
的计算结果为False
:
if not all(inventory):
...
编辑:假设
库存
只包含数字,当然对于您的简单案例,我认为您可以这样做:
if 0 in inventory:
# do something
对于这类事情的更一般情况,可以使用any
函数()
试试这个:
inventory=[1,2,3,4,0]
if 0 in inventory:
print "There is 0 in the list"
输出:
如果库存中为0,则
的列表中为0+1。有时人们会忘记一些更容易的事情:)易碎的,例如可以用inventory=['spam',[],'egs']打破。
@wim:当然;我假设inventory
是一个整数列表(这就是为什么那里有一个0)。如果不需要,最好不要做这样的假设,或者至少在你的答案中提到这些假设。“测试这些条目中是否有一个等于零,如果有一个条目等于零,请做些什么。”这令人困惑。“任何一个条目”和“任何一个条目”之间有什么区别?做些什么——一般的事情,或者特别是一个/一些/所有零条目,你需要知道零条目在列表中的位置(索引)?
if any([item == 0 for item in inventory]):
# do something
inventory=[1,2,3,4,0]
if 0 in inventory:
print "There is 0 in the list"