2012-01-05 41 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列表

相關問題