我试图查看给定位置的整数是否大于该列表中的每个其他整数。例如:
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 :(得分: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')