如何检查给定位置的整数是否大于该列表中的每个其他整数?

时间:2017-05-23 17:02:58

标签: python

我试图查看给定位置的整数是否大于该列表中的每个其他整数。例如:

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

请记住,我需要查看该特定索引是否少于列表中的所有其他索引,因此,使用min(values)之类的内容将无效。一个列表,如

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

没有单个最小值;任何给定的索引都应该返回False

3 个答案:

答案 0 :(得分: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 :(得分: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

答案 2 :(得分: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')