Python如何消除线条之间的边界范围重叠

2024-04-27 04:11:10 发布

您现在位置:Python中文网/ 问答频道 /正文


Tags: python
1条回答
网友
1楼 · 发布于 2024-04-27 04:11:10

对于一个简单的任务来说,您的代码似乎过于复杂。您不需要使用四个变量-tmp\u l、tmp\u h、previous\u low和previous\u high。您也不需要维护重叠间隔的当前列表。你所需要做的就是保持重叠间隔的高低。你知道吗

但是,代码的问题是每次迭代都调用write_line。相反,您要做的是,仅当当前低值大于上一个高值时才调用write_line,这意味着上一组重叠间隔已经结束,并且在循环结束时也是如此。你知道吗

以下代码将起作用:

for line in inf.splitlines():
    cnt += 1
    line = line.split(' ')
    current_low = int(line[1])
    current_high = int(line[2])
    if current_low <= previous_high:
        previous_high = current_high
    else:
        if previous_high > 0:
            write_line(line[0], previous_low, previous_high, cnt, outf)
        previous_low = current_low
        previous_high = current_high

if previous_high > 0:
    write_line(line[0], previous_low, previous_high, cnt, outf)

需要检查if previous_high > 0以不输出previous\u low和previous\u high的默认值-0,0。for循环末尾的额外write行需要输出最后一组重叠间隔。你知道吗

当有两个以上的重叠间隔时,这个代码也可以工作。你知道吗

相关问题 更多 >