Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否有一种pythonic方法来删除包含在较大偏移中的偏移?_Python - Fatal编程技术网

是否有一种pythonic方法来删除包含在较大偏移中的偏移?

是否有一种pythonic方法来删除包含在较大偏移中的偏移?,python,Python,我有一份补偿清单- input = [(157, 1228), (1233, 1540), (1925, 7000), (2392, 4378), (4451, 5368), (5759, 7000)] 我只想保留那些不包含在其他偏移中的偏移。例如: output = [(157, 1228), (1233, 1540), (1925, 7000)] 我尝试了循环和if-else语句,但我确信会有一种类似python的方法来计算它 我试过这个- for i in range(1,len(x)

我有一份补偿清单-

input = [(157, 1228), (1233, 1540), (1925, 7000), (2392, 4378), (4451, 5368), (5759, 7000)]
我只想保留那些不包含在其他偏移中的偏移。例如:

output = [(157, 1228), (1233, 1540), (1925, 7000)]
我尝试了循环和if-else语句,但我确信会有一种类似python的方法来计算它

我试过这个-

for i in range(1,len(x),1):
    if x[i-1][1] > x[i][0]:
        del x[i]

但这不起作用。

删除了旧的尝试-不确定它的有效性

编辑新答案-独立排序&希望更接近python的方式-但需要更多的迭代以使其独立排序:

def check_if_outside(offset, offset_input):
    return not any((i[0] < offset[0] < i[1]) or (i[0] < offset[1] < i[1]) for i in {el for el in offset_input}.difference({offset}))

# Now (to prove order isn't important) reorder the sample
sample = [(2392, 4378), (157, 1228), (1233, 1540), (1925, 7000), (4451, 5368), (5759, 7000)]

result = list(filter(lambda x: check_if_outside(x, sample), sample))

已删除旧尝试-不确定其有效性

编辑新答案-独立排序&希望更接近python的方式-但需要更多的迭代以使其独立排序:

def check_if_outside(offset, offset_input):
    return not any((i[0] < offset[0] < i[1]) or (i[0] < offset[1] < i[1]) for i in {el for el in offset_input}.difference({offset}))

# Now (to prove order isn't important) reorder the sample
sample = [(2392, 4378), (157, 1228), (1233, 1540), (1925, 7000), (4451, 5368), (5759, 7000)]

result = list(filter(lambda x: check_if_outside(x, sample), sample))
如果包含两条边,则可以尝试此简单的循环:

样本=[ 157, 1228, 1233, 1540, 1925, 7000, 2392, 4378, 4451, 5368, 5759, 7000 ] 输出=[] 对于样本中的x,y: 如果没有 对于输出中的i,x>i[0]和xi[0]和y>> [157, 1228, 1233, 1540, 1925, 7000] 此外,您不应将单词input用作变量名,这是一个处理用户输入功能的python保留关键字。

如果包含两条边,您可以尝试使用此简单的循环:

样本=[ 157, 1228, 1233, 1540, 1925, 7000, 2392, 4378, 4451, 5368, 5759, 7000 ] 输出=[] 对于样本中的x,y: 如果没有 对于输出中的i,x>i[0]和xi[0]和y>> [157, 1228, 1233, 1540, 1925, 7000]
另外,您不应该将单词input用作变量名,这是一个处理用户输入功能的python保留关键字。

其他子集中不包含的含义是什么?你仍然应该展示你已经尝试过的东西。其他子集中不包含的意思是什么?你仍然应该展示你所做的。@JasonChia-现在看起来更好了吗?@JasonChia-现在看起来更好了吗?你可以编辑is\u offset\u contains\u offset func来做Marcos做的事情,如果你想做的话。你可以编辑is\u offset\u contains\u offset func来做Marcos做的事情,如果你想做的话。