2017-05-23 13 views
0

ある場所の整数がそのリスト内の他のすべての整数よりも大きいかどうかを調べようとしています。たとえば: 与えられた場所の整数がそのリスト内の他のすべての整数よりも大きいかどうかをチェックする方法?

values = [2,5,3,1,6] 
if values[0] < all other integers 
    print something 

は覚えておいてください、私は動作しません min(values)ようなものを使用して、そのため、その特定のインデックスがリスト内の他のすべてのインデックスよりも小さいかどうかを確認する必要があります。そのような

values = [2,5,3,1,6,1] 

ようなリストは、ない単一の最小値を持っていません。任意のインデックスはFalseを返す必要があります。

+0

[ループ](https://wiki.python.org/moin/ForLoopを)? – litelite

+0

"min(値)のようなものを使用しても機能しません。 ?何故なの ? – alfasin

+0

[リストのmax()/ min()を使用して返されるmaxまたはmin項目のインデックスを取得する](https://stackoverflow.com/) q/2474015/953482)があなたにとって興味深いかもしれません。 – Kevin

答えて

3

anyを使用して、リスト内のいずれかの項目が条件を満たす場合にアサートすることができます。ただ、そのような問題の一つのエントリをスキップ:

def f(li, idx): 
    return any(e>li[idx] for i, e in enumerate(li) if i!=idx) 

>>> f([2,5,3,1,6], 0) 
True 
>>> f([2,5,3,1,6], 4) 
False 

をあなたの使用に合わせて>または任意に<を逆にすることができます。あなたは指定されたインデックスは、他のすべてのリスト要素と関係を持っていることを主張したい場合は

(またはnotを追加)、allを使用します。

def f2(li, idx): 
    return all(e>li[idx] for i, e in enumerate(li) if i!=idx) 

>>> f2([2,5,3,1,6,1], 3) 
False 
1

使用allオペレーターのシーケンスを反復します。この場合、あなたは自己に対するチェックを排除する必要もあります。ブール式は次のようになります。

>>> values = [2,5,3,1,6] 
>>> given_loc = 0 

>>> all ([values[given_loc] < values[i] \ 
     for i in range(len(values)) \ 
      if i != given_loc]) 
False 
>>> given_loc = 3 
>>> all ([values[given_loc] < values[i] for i in range(len(values)) if i != given_loc]) 
True 
1

あなたが内蔵され、このようなany()機能を使用できます。

values = [2,5,3,1,6] 
loc = 4 
if not any((values[i] > values[loc]) for i in range(len(values)) if i != loc): 
    print('something') 
関連する問題