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]]