我想删除排序列表中的每一个项目,当它是在100秒内从以前的事件之一。示例:
event_list = [3, 10, 12, 140, 140, 150, 300]
filtered_event_list = [3, 140, 300]
我有下面的代码,似乎工作。但它不会删除与上一个项目具有相同时间的项目。另一个问题是它不是很pythonic,因为我需要一个额外的占位符true/false或0/1来存储我的结果,然后才开始删除100秒内的项。你知道吗
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吗? 有人有更好的方法来写这段代码吗?你知道吗
谢谢 当做 迈克尔
这将返回一个包含项的生成器。你知道吗
示例用法:
这假设当你说“在前一个项目的100以内”时,你指的是前一个输出项目。输出应该是什么:
你想要
[1, 102]
,还是[1]
?你知道吗后者将使用以下代码生成:
你可以试试这个。只要检查一下第一个元素和下一个元素的区别
如果你想做genric方法,请看下面的答案
解释我的痛苦
new_list[-1]
相同输出:
相关问题 更多 >
编程相关推荐