Python 如何合并一些

Python 如何合并一些,python,Python,我从文本文件中读取了很多下限和上限,并希望合并这些限制。数据类型为浮点数或日期字符串,如yyyy-mm-dd(两种独立的情况) 这里有一个int边界的简短列表,只是一个简单的示例 # boundaries read from text files. b = [[-1, 2], [-2, 1], [0, 4], [3, 5], [-3, 1], [-10, -7], [6, 8]] 如果只需要最低和最高的限制,这是很简单的 b = reduce(lambda x,y: [min(x[

我从文本文件中读取了很多下限和上限,并希望合并这些限制。数据类型为浮点数或日期字符串,如
yyyy-mm-dd
(两种独立的情况)

这里有一个int边界的简短列表,只是一个简单的示例

  # boundaries read from text files.
  b = [[-1, 2], [-2, 1], [0, 4], [3, 5], [-3, 1], [-10, -7], [6, 8]]
如果只需要最低和最高的限制,这是很简单的

  b = reduce(lambda x,y: [min(x[0], y[0]), max(x[1], y[1]], b)
但是数据中存在差距,所以我也需要得到差距。我希望能有这样的结果

  # return a list merged limits
  [[-10, -7], [-3, 5], [6, 8]] 


我怎样才能优雅地做到这一点呢?

如果您喜欢使用
reduce
,您仍然可以这样做:

b = [[-1, 2], [-2, 1], [0, 4], [3, 5], [-3, 1], [-10, -7], [6, 8]]
b.sort()
result = []
current = b[0]
for interval in b[1:]:
    if current[1] >= interval[0]:
        current[1] = interval[1]
    else:
        result.append(current)
        current = interval
result.append(current)
print(result)  # [[-10, -7], [-3, 5], [6, 8]]
从functools导入reduce
def接头(附件五):
如果不是acc:
返回[v]
last=根据pop()
如果v[0]>last[1]:
返回acc+[最后,v]
返回acc+[(最后[0],最大值(最后[1],v[1])]
b=[-1,2]、-2,1]、[0,4]、[3,5]、-3,1]、-10,7]、[6,8]]
打印(减少(合并,排序(b),[]))
哪个输出

[[-10, -7], (-3, 5), [6, 8]]

如果您喜欢使用
reduce
,您仍然可以这样做:

从functools导入reduce
def接头(附件五):
如果不是acc:
返回[v]
last=根据pop()
如果v[0]>last[1]:
返回acc+[最后,v]
返回acc+[(最后[0],最大值(最后[1],v[1])]
b=[-1,2]、-2,1]、[0,4]、[3,5]、-3,1]、-10,7]、[6,8]]
打印(减少(合并,排序(b),[]))
哪个输出

[[-10, -7], (-3, 5), [6, 8]]