【发布时间】:2014-05-05 23:36:39
【问题描述】:
我的目标是合并下面示例列表中的重叠元组。
如果一项在下一项的范围内,则必须合并两个元组。生成的元组是一个涵盖两项的范围(最小值到最大值)的元组。例如; [(1,6),(2,5)] 将导致[(1,6)],因为[2,5] 落在[(1,6)] 的范围内
mylist=[(1, 1), (1, 6), (2, 5), (4, 4), (9, 10)]
我的尝试:
c=[]
t2=[]
for i, x in enumerate(mylist):
w=x,mylist[i-1]
if x[0]-my[i-1][1]<=1:
d=min([x[0] for x in w]),max([x[1] for x in w])
c.append(d)
for i, x in enumerate(set(c)):
t=x,c[i-1]
if x[0]-c[i-1][1]<=1:
t1=min([x[0] for x in t]),max([x[1] for x in t])
t2.append(t1)
print sorted(set(t2))
派生输出:
[(1, 6), (1, 10)]
期望的输出:
[(1, 6), (9, 10)]
关于如何获得所需输出的任何建议(如果可能的话,用更少的行)?谢谢。
【问题讨论】:
-
您的问题不清楚。请改写
-
合并和重叠的标准是什么?还不清楚
-
如果输入之一是
(3, 7),输出应该是什么? -
@thefourtheye 如果输入之一是 (3,7),则输出将为 [(1,7),(9,10)]