【发布时间】:2014-07-17 16:00:06
【问题描述】:
我想从排序列表中删除每个项目,前提是它距离之前的事件之一在 100 秒内。示例:
event_list = [3, 10, 12, 140, 140, 150, 300]
filtered_event_list = [3, 140, 300]
我有以下似乎可以工作的代码。但它不会删除与前一个具有相同时间的项目。我遇到的另一个问题是它不是非常pythonic,因为在开始删除 100 秒内的项目之前,我需要一个额外的占位符来表示真/假或 0/1 来存储我的结果。
downCycles = 100
event_list = [[3, 0], [10, 0], [12, 0], [140, 0], [140, 0], [150, 0], [300, 0]]
for e_idx, event in enumerate(event_list):
if e_idx > 0:
prev_idx = e_idx - 1
while event[0] - event_list[prev_idx][0] < downCycles and prev_idx >= 0:
event[1] = event[0] - event_list[prev_idx][0]
prev_idx -= 1
filtered_event_list = [e for e in event_list if e[1] == 0]
# filtered_event_list = [[3, 0], [140, 0], [140, 0], [300, 0], [800, 0]]
有人知道在这个例子中删除第二个 140 吗? 有没有人更好的方法来编写这段代码?
谢谢 问候 迈克尔
【问题讨论】:
标签: python list python-2.7 optimization