比较 Python 列表中的重叠元组值
python 276
原文标题 :Compare overlapping tuple values in a list of Python
我有两个列表,比如说k
和m
具有开始和结束值的元组,即范围。我需要检查k
和m
之间是否有任何值重叠,如果是,那么我必须增加一个变量,比如说tp
。在列表中k
,如果在listm
中没有找到重叠的元组,则必须增加另一个变量fp
。同样,在listm
中,如果在k
中没有找到重叠的元组,则增加另一个变量fn
。
以下是列表中的值:
k = [(76, 166), (273, 384), (472, 659), (820, 860), (970, 999), (1129, 1180)]
m = [(46, 125), (428, 507), (620, 699)]
我尝试了以下但它给出了错误int object is not subscriptable
:
k = [(76, 166), (273, 384), (472, 659), (820, 860), (970, 999), (1129, 1180)]
m = [(46, 125), (428, 507), (620, 699)]
tp = fp = fn = 0
for x in k:
for y in m:
if((y[0]>x[0]) and (y[0]<x[1])):
tp = tp + 1
elif((y[1]>x[0]) and (y[1]<x[1])):
tp = tp + 1
else:
fp = fp + 1
print("tp: ", tp)
print("fp: ", fp)
回复
我来回复-
maya 评论
如果忽略单个值会起作用,看看这是不是你想要的效果:
k = [(76, 166), (273, 384), (472, 659), (820, 860), (970, 999), (1129, 1180)] m = [(46, 125), (428, 507), (620, 699)] tp = fp = fn = 0 for x in k: for y in m: if (x[0] < y[0] < x[1]) or (x[0] < y[1] < x[1]): tp += 1 else: fp += 1 print("tp: ", tp) print("fp: ", fp)
2年前