def mergeoverlapping(initialranges):
i = sorted(set([tuple(sorted(x)) for x in initialranges]))
f = [i[0]]
for c, d in i[1:]:
a, b = f[-1]
if c<=b<d:
f[-1] = a, d
elif b<c<d:
f.append((c,d))
else:
pass
return f
def main():
#open file for reading
list_of_Tups = []
with open("intervals.txt") as in_file:
for line in in_file:
int_list = [int(i) for i in line.split()]
line = int_list
list_of_Tups.append(line)
list_of_Tups.sort()
answer = list(mergeoverlapping(list_of_Tups))
print("Non-intersecting Intervals:")
for i in range (len(answer)):
print(answer[i])
main()
給定一個數據文件,我必須創建元組,將元組存儲在列表中,對列表進行排序,並用一個元組替換每對重疊的元組。然後打印非相交元組的列表。如何按照間隔大小的遞增順序打印非交叉間隔?
但是現在我想知道如何以間隔大小的遞增順序打印非相交間隔。如果兩個間隔的大小相同,則以低端的升序打印這兩個間隔。因此,輸出將類似於:
不相交的時間間隔: (-4,3) (4,7) (10,15)
非交叉間隔大小順序: ( 4,7) (10,15) (-4,3)
可能重複的[合併重疊間隔python](http://stackoverflow.com/questions/43600878/merging-overlapping-intervals-python) – Vallentin
有趣。甚至與大約一天前的問題相同。 – Vallentin
問題的第一部分是相同的。但我想知道如何將非交叉區間按大小排序。我是否已經擁有了out_put,然後爲每個範圍創建單獨的列表,計算列表的長度。然後按升序打印? – BingBing23