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

Bru*_*ris 0 python arrays optimization

我正在处理一个非常大的数据集.数据集由数据配置文件组成,每个配置文件存储在一个数组中.我需要为每个数组找到连续的一系列值,包括第一个值,并匹配一个条件(值> = 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

我可以解析数组并进行"if"测试,但考虑到我有数十万个系列要分析,我正在寻找更优化的东西.

Abh*_*jit 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]
Run Code Online (Sandbox Code Playgroud)

对于最后一个示例,尽管它没有返回None,但是一个空的可迭代,您可以轻松地模拟以满足您的要求

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