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"测试,但考虑到我有数十万个系列要分析,我正在寻找更优化的东西.
这可以通过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)
| 归档时间: |
|
| 查看次数: |
586 次 |
| 最近记录: |