过滤两个冗长的配对数据列表

时间:2017-01-11 19:55:21

标签: python list filter runtime simultaneous

我有一个时间数据列表,每个值都是一个日期时间值。 我有一个与时间数据一起的浮点数测量列表,即测量[i]在时间[i]发生。

有些测量不是浮点数,而是空字符串。

我想过滤掉所有空字符串的测量值,并等效地过滤掉与这些测量值相关的时间。

时间和测量列表非常冗长,因此将运行时考虑到此问题的解决方案中会很棒

谢谢!

2 个答案:

答案 0 :(得分:1)

您可以将zip列表理解表达式一起使用来过滤值。例如,让我们说你的列表的价值是:

# For demo purpose
>>> measurement = ['a', 'b', '', 'c', '']
>>> time        = [  1,   2,  3,   4,  5]

如果''列表中的值为measurement,则表达式下方将过滤两个列表中的项目。

>>> measurement, time = zip(*[(i, j) for i, j in zip(measurement, time) if i !=''])

measurementtime列表保留的最终值为:

>>> measurement
('a', 'b', 'c')
>>> time
(1, 2, 4)

答案 1 :(得分:0)

使用zipfilter。在这里,我再次解压缩这两个列表,但你不必这样做。

from numbers import Number
time, measurement = zip(*filter(lambda x: isinstance(x[1], Number), zip(time, measurement)))