繁体   English   中英

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

[英]How to compare values in a list with a specific integer value?

我有一个函数返回说[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进行比较?

谢谢

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

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条件进行简单循环:

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

您可以使用any()

例如:

a = [1,2,3,4]

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

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

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检查,您还可以删除它。

一个简单的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']

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM