我有一个时间数据列表,每个值都是一个日期时间值。 我有一个与时间数据一起的浮点数测量列表,即测量[i]在时间[i]发生。
有些测量不是浮点数,而是空字符串。
我想过滤掉所有空字符串的测量值,并等效地过滤掉与这些测量值相关的时间。
时间和测量列表非常冗长,因此将运行时考虑到此问题的解决方案中会很棒
谢谢!
答案 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 !=''])
measurement
和time
列表保留的最终值为:
>>> measurement
('a', 'b', 'c')
>>> time
(1, 2, 4)
答案 1 :(得分:0)
使用zip
和filter
。在这里,我再次解压缩这两个列表,但你不必这样做。
from numbers import Number
time, measurement = zip(*filter(lambda x: isinstance(x[1], Number), zip(time, measurement)))