-1

我有几秒钟的时间输入从最小到最大的有序数据。

 start_time[s] = [10, 20, 30, 40, 50, 61, 79, 80]

 end_time[s] = [8, 9, 15, 31, 41, 60]

列表的大小与生成的日志文件时间戳数据不同

我想得到 end_time 和 start_time 最小值之间的正差的输出

我的代码如下:

  for item1 in end_time:   
    for item2 in start_time:  
      if (item1 > item2):
         new_item = item1 - item2
         new_list.append(new_item)

[5、21、11、1、31、21、11、1、50、40、30、20、10]

理想的输出将如下生成:

[5、11、11、20]

5 ...这是通过取 15 的 end_time - 10 的 start_time,为什么?它的第一个 end_time > start_time (8,9 也是 end_times 小于 10)

11 ...这是通过取下一个 end_time 31(我不想使用 15,因为我会重复计算),然后减去下一个 start_time 20 得到 11。

11...这是通过取以下 41 的 end_time 并减去 30 的 start_time 得到 11。

20...这将是最后一个条目,它取 end_time 的 60 并使用 start_time 的 40 给出 20 的差值。

4

2 回答 2

0

我假设两个列表都是按顺序排列的,这就是您的示例数据所显示的。

timeDeltas = []
idxStart = 0
idxEnd =  len(end_time)
for start in start_time:
    for i in range(idxStart, idxEnd)
        delta = 0
        end = end_time[i]
        if end > start:
            delta = end - start
            idxStart = i
        else:
            timeDeltas.append(delta)
            break

请注意,我没有进行完整性检查(例如,可以一遍又一遍地使用相同的结束时间)。

于 2012-07-16T23:27:28.547 回答
0

我就是这样做的

start_time = [10, 20, 30, 40, 50, 61, 79, 80]
end_time = [8, 9, 15, 31, 41, 60]
time_difference = [(min(start_time) - et) for et in end_time if min(start_time) > et]
[2,1]

你的问题可能有点模棱两可。我假设您严格想要正时差。

你想要的输出是什么?

于 2012-07-17T02:25:23.867 回答