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

2024-04-26 22:43:10 发布

您现在位置: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。你知道吗


Tags: 方法integersfalse列表if整数allmin
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

使用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

您可以像这样使用内置的^{}函数:

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')

相关问题 更多 >