python:从第一个元素开始查找满足条件的连续值列表

0 投票
1 回答
814 浏览
提问于 2025-04-17 16:00

我正在处理一个非常大的数据集。这个数据集由多个数据档案组成,每个档案都存储在一个数组里。我需要找出每个数组中连续的数值序列,包括第一个数,并且这些数值要满足一个条件(值大于等于26)。

举个例子:

对于输入值=[30.1, 29.7, 28.5, 27.1, 20, 17, 16]

这个算法返回 [30.1, 29.7, 28.5, 27.1]

对于输入值=[30.1, 29.7, 28.5, 27.1, 20, 17, 28, 27]

这个算法返回 [30.1, 29.7, 28.5, 27.1]

对于输入值=[25, 30.1, 29.7, 28.5, 27.1, 20, 17, 28, 27]

这个算法返回 None

我可以解析这个数组并进行“如果”测试,但考虑到我有成千上万的序列需要分析,我在寻找更优化的方法。

1 个回答

5

这可以通过 itertools.takewhile 来实现,它会返回元素,直到某个条件不再满足为止。

下面是一个使用 itertools.takewhile 的例子:

>>> from itertools import takewhile
>>> list(takewhile(lambda e:e>=26, [30.1, 29.7, 28.5, 27.1, 20, 17, 16]))
[30.1, 29.7, 28.5, 27.1]

在最后一个例子中,虽然它并不会返回 None,而是返回一个空的可迭代对象,你可以很容易地将其调整为满足你的需求。

>>> list(takewhile(lambda e:e>=26, [25, 30.1, 29.7, 28.5, 27.1, 20, 17, 28, 27]))
[]

撰写回答