Pythonic方式匹配对象列表中的时间戳

时间:2015-08-11 13:25:47

标签: python

我有两个列表,每个列表都包含具有属性gps_seconds的对象。

gps_seconds属性会有一段时间排成一行,我想将两个列表修剪下来,以便我有一个具有共同时间戳的单独列表。

例如,在列表A中,对象可能包含gps_seconds个参数:

99.8
99.9
100.0
100.1
100.2

列表B可能包含:

99.9
100.0
100.1
100.2
100.3

在这种情况下,我想从A删除第一个条目,从B删除最后一个条目,以确保两个列表的时间戳匹配正确。

我尝试过一种相当不优雅的方法,但感觉可能会有一种pythonic的方法来快速完成这个我不知道的方法。

3 个答案:

答案 0 :(得分:4)

这应该有效:

set1 = set([99.8, 99.9, 100.0, 100.1, 100.2])
set2 = set([99.9, 100.0, 100.1, 100.2, 100.3])
res = set1 & set2
print res

Operator & on sets返回集合的交集。

答案 1 :(得分:1)

您可以使用列表理解来执行此操作,但使用in可能不是最快的方法...

list1 = [99.8,
99.9,
100.0,
100.1,
100.2]

list2 = [99.9,
100.0,
100.1,
100.2,
100.3]

[a for a in [b for b in list1 if b in list2] if a in list1]

返回

[99.9, 100.0, 100.1, 100.2]

答案 2 :(得分:0)

您可以使用套装:

ViewModel

这里我假设时间戳将始终是升序,因此排序两个集合的交集应该是有效的。