【发布时间】:2017-01-11 19:55:20
【问题描述】:
我有一个时间数据列表,每个值都是一个日期时间值。 我有一个与时间数据一起浮动的测量列表,即测量[i]发生在时间[i]。
有些测量值不是浮点数,而是空字符串。
我想过滤掉所有空字符串的测量值,并等效地过滤掉与这些测量值相关的时间。
时间和测量列表很长,因此最好将运行时间因素纳入解决此问题的解决方案
谢谢!
【问题讨论】:
标签: python list filter runtime simultaneous
我有一个时间数据列表,每个值都是一个日期时间值。 我有一个与时间数据一起浮动的测量列表,即测量[i]发生在时间[i]。
有些测量值不是浮点数,而是空字符串。
我想过滤掉所有空字符串的测量值,并等效地过滤掉与这些测量值相关的时间。
时间和测量列表很长,因此最好将运行时间因素纳入解决此问题的解决方案
谢谢!
【问题讨论】:
标签: python list filter runtime simultaneous
您可以使用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)
【讨论】:
使用zip 和filter。这里我再次解压这两个列表,但你不必这样做。
from numbers import Number
time, measurement = zip(*filter(lambda x: isinstance(x[1], Number), zip(time, measurement)))
【讨论】: