如何比较列表中的值和特定的整数值?

时间:2018-12-07 07:09:58

标签: python

我有一个函数,该函数返回说[1],[1,2],[1,2,3]或[1,2,3,4]。我想将列表中的值与某个值(例如0.2)进行比较。

在此之前,我只有一个来自函数的整数值,而不是要与0.2进行比较的值列表。

# this function gives a list as mentioned previously
iou_value = oneObject.intersection_over_union(image,humanPos,belongings_bb)     

if iou_value is not None and iou_value > 0.2:

在这种情况下如何编写if条件以将列表值与0.2进行比较?

谢谢

4 个答案:

答案 0 :(得分:2)

取决于您到底想要什么,但是很可能列表理解会帮助您:

compared_list = [1 for elem in iou_value if elem > 0.2 else 0]

在相应的索引处会给您1和0

编辑:如果要基于比较将元素分开:

geq = [elem for elem in iou_value if elem >= 0.2]
less = [elem for elem in iou_value if elem < 0.2]

编辑2:如果要使用if-conditions进行简单循环:

for elem in iou_value:
    if elem >= 0.2:
        #do what you want if geq
    else:
        #do what you want if less

答案 1 :(得分:1)

您可以使用any()

例如:

a = [1,2,3,4]

if any(iou_value > 0.2 for iou_value in a):
    print("Yes")
else:
    print("No")

答案 2 :(得分:1)

您需要遍历列表以比较每个值,例如:

if iou_value is not None:
  for v in iou_value:
    if v > 0.2:
      print(f'{v} is greater than 0.2')

您可能需要调整方法,以使其不返回None,而是返回一个空列表[],这样您也可以删除if io_value is not None检查。

答案 3 :(得分:1)

一个简单的if条件可以做到这一点:

In [2090]: l = [1,2,3,4]

In [2091]: val = 0.2

In [2093]: for i in l:
      ...:     if i > val:
      ...:         print('{} is greater than {}'.format(i,val))
      ...:         
1 is greater than 0.2
2 is greater than 0.2
3 is greater than 0.2
4 is greater than 0.2

或使用list comprehensions

In [2096]: ['yes' for i in l if i > val]
Out[2096]: ['yes', 'yes', 'yes', 'yes']