【问题标题】:How to compare values in a list with a specific integer value?如何将列表中的值与特定整数值进行比较?
【发布时间】:2019-05-08 22:38:22
【问题描述】:

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

谢谢

【问题讨论】:

标签: python


【解决方案1】:

取决于你到底想要什么,但最有可能的列表理解会帮助你:

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

【讨论】:

  • [bool(elem &gt; 0.2) for elem in iou_value] 是一种简洁的写法,你可以使用filter() 来分隔列表。
【解决方案2】:

您可以使用any()

例如:

a = [1,2,3,4]

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

【讨论】:

    【解决方案3】:

    你需要遍历列表来比较每个值,像这样:

    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检查。

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多