1

我正在尝试为我的研究论文实现某种算法(编程不是我的主要研究领域),我需要一些帮助。考虑以下类型的数据结构(例如 a 和 b),其中我们有一条线性时间线,并且对象放置在该时间轴上,彼此相距一定距离(实际上这些对象表示数据包,其宽度等于传输数据包所需的时间)。我想将它们对齐在右侧,使其成为我们的参考点(时间 t=0),然后合并这两个列表(a 和 b),如果我可以称它们为列表,并得到一个结果列表,如 c 所示。重叠的对象被移动以形成单个列表,并且这些对象之间的间隙相应地发生变化。知道我应该如何进行吗?链表?(如果它们存在于 python 中)。可以将两个以上的列表合并到一个列表中。提前致谢

       ____          _____            ____
    __| a3 |________| a2  |__________| a1 |  (a)

       ____             _____         ____
    __| b3 |___________| b2  |_______| b1 |  (b)


            ____  ____     ______  _____   ____  ____
    _______| a3 || b3 |___| a2   || b2  |_| a1 || b1 |  (c)
4

1 回答 1

-1

例如,数据项的 dict 和数据序列的列表:

数据1:

[{'start':0, 't': 10, 'dtype': 'a'}, {'start': 30, 't':20, 'dtype': 'a'}, {'start': 50,'t':30,'dtype':'a'}]

数据2:

[{'start':15, 't': 10, 'dtype': 'b'}, {'start': 40, 't':20, 'dtype': 'b'}, {'start': 50,'t':30,'dtype':'b'}]

和合并列表(按开始时间排序):

sorted(data1+data2, key=lambda x:x['start'])

结果:

[{'start': 0, 't': 10, 'dtype': 'a'}, {'start': 15, 't': 10, 'dtype': 'b'}, {'start': 30, 't': 20, 'dtype': 'a'}, {'start': 40, 't': 20, 'dtype': 'b'}, {'start': 50, 't': 30, 'dtype': 'a'}, {'start': 50, 't': 30, 'dtype': 'b'}]

对于延期交货,在 sorted 函数中使用参数“reverse=True”。要查找重叠元素,您只需在列表迭代期间检查item['start'] + item['t'] > nextitem['start'] ===> items 重叠,并且您必须根据您的算法调整 nextitem 开始位置。

于 2013-01-30T16:49:27.410 回答