我目前的解决方案指针是
- 以太通过迭代器类产生新的组装内部列表
- 或通过产生新组装的内部列表的迭代函数
还有另一种更好的方法来解决这个挑战吗?
编辑
@Glenn:很好的反对意见。我没有想到这一点,因为我遇到的列表没有按照我想象的方式排序。
@THC4k:感谢您的解决方案。我学会了chain.from_iterable
@Mike DeSimone:嗯,测试了你的解决方案,但出了点问题,也许我错过了一些东西,......
@Jamie 和 Odomontois:感谢您指出要更详细
我的目标
我正在锻造一个小算法,它将任务列表 - 对/元组:(开始,停止) - 转换为简化的任务列表,其中重叠的任务合并在一起。
一个例外:当一个事件与另一个事件完全重叠时,我的算法失败(s1 s2 e2 e1)
详细的:
- 我有一个成对的列表'taskList'(经验教训 - 元组:)。
- 每个元组由 2 个日期时间对象组成:任务的开始和结束。
- 重要:'taskList'的年表,其中顺序由开始确定,因为任务可能重叠p
- 'taskList' 包含几天,因此是日期时间对象
示例,只是时间的字符串表示形式以提高可读性
taskList = [(9:00,10:00),(9:30,11:00),(11:00,12:30),(13:30,14:00),(14:00,18:00)]
最终结果:
result = [(9:00,12:30), (13:30,18:00)]
现在我的想法是,当我以我质疑的方式重新排列“任务列表”时
taskListT1 = [(9:00,),(10:00,9:30),(11:00,11:00),(12:30,13:30),(14:00,14:00),(18:00,)]
现在我可以消除那些 a >= b 的元组 (a,b):
taskListT2 = [(9:00,),(12:30,13:30),(18:00,)]
并转换回来:
result = [(9:00,12:30), (13:30,18:00)]