我有一个函数,该函数返回说[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进行比较?
谢谢
答案 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']