Python从列表1中的列表2中删除交集

时间:2018-08-09 17:32:11

标签: python python-2.7 list loops intersection

我有2个要重叠的范围。然后在第二步中从第一范围中删除该重叠部分。 当前,这些范围保存在一个列表中,该列表的格式为(开始值,结束值)。
因此,范围1 为:
(5230,7585)

范围2 为:
(6752,6988)

这是最好的解决方案吗?创建这样的变量,在其中我像这样调用range函数,并比较其他地方描述的变量 (How to find range overlap in python?

x = range(5230,7585)
y = range(6752,6988)
xs = set(x)
xs.intersection(y)

实际上,我在这两种类型的范围中都输入了> 30.000。我有兴趣从列表2(或范围2)中找到与列表1(范围1)重叠的范围。然后,将列表2与列表1的交集从列表1中删除。这样列表1看起来像这样

List1 = [...,[5230,6752], [6988,7585], ...]

我尝试使用许多for循环和if语句来执行此操作,但是很快就变得非常混乱和不清楚。我可以到目前为止发布我的代码,但是我不确定这是否会有所帮助。 是否有一个库或内置函数可以更好地实现此任务(比通过for-if语句手动完成)。删除交集的最Python方式是什么。

会吗?

xintrm = xs.difference(y)

最好的问候,

修改1: 谢谢@主持人。我在将其他线程中建议的解决方案转移到我的情况时遇到了麻烦。由于我没有一个要查找间隔的范围,而是我有多个范围来查找截距

0 个答案:

没有答案