2012-01-05 10 views
2

私はリスト[配列]を持っていますが、これはいつでも最大15個のエントリを持ちます。これらのエントリのいずれかがゼロに等しいかどうかをテストし、いずれかのエントリがゼロに等しい場合は何かを実行する必要があります。Python 3リスト内の項目の範囲をテストする

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

など、効率的なやり方は何ですか?

+0

「これらのエントリのいずれかがゼロに等しい場合、いずれか1つのエントリがに等しい場合、テストゼロ、何かをする。混乱しています。 「これらのエントリのいずれか」と「1つのエントリ」の違いは何ですか?何か - 何か一般的なもの、または特に1/some/all zeroのエントリを持つもので、リストのゼロエントリの位置(インデックス)を知る必要がありますか? –

答えて

2

Pythonの組み込みのany()関数がこれに最適です。引数の中でiterableをとり、いずれかの要素が真(偽でない)ならばTrueを返します。

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

すべての要素に該当する場合、Trueを返しますall()と呼ばれる同様の機能もあります。

0

メイクall機能の使用、および0Falseとして評価されているという事実:

if not all(inventory): 
    ... 

は編集:あなたの簡単なケースではもちろん

+0

壊れやすい、たとえば 'inventory = ['spam'、[]、 'eggs'] ' – wim

+0

@wim:もちろんです。私は 'inventory'が整数のリストであると仮定しています(なぜそこに0があるのでしょうか) –

+0

それが必要でない場合、あるいはあなたの答えに少なくともその仮定を言及していないのが最善です。 – wim

5

の、私はあなたを考えて、inventoryは数値のみが含まれていることを想定しおそらくこれを行うことができます:

if 0 in inventory: 
    # do something 

このタイプの薄いgの場合、any関数(docs)を使用できます。

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

「インベントリでif0」の場合+1。時には簡単なことを忘れてしまうこともあります:) –

0

これを試してみてください:

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

出力を: リストに0がある

関連する問題