-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

これが私がやった方法です

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 に答える
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 に答える