首页 > 解决方案 > Python 组列表到子列表的列表是单调的,元素之间的差异相等

问题描述

l = [2,4,6,12,14,16,21,27,29,31]

我想将它拆分为列表,这样每个列表的元素都是一个单调列表,元素之间的差异为 2:

new_l = [[2,4,6], [12,14,16],[21], [27,29,31]]

最有效的方法是什么?

标签: pythonlistnumpyvectorizationnumpy-ndarray

解决方案


您可以确定要拆分的索引,然后np.split像这样应用:

np.split(l, np.flatnonzero(np.diff(l)!=2) + 1)

输出:

[array([2, 4, 6]), array([12, 14, 16]), array([21]), array([27, 29, 31])]

然而,使用不同长度的数组从来都不是有效的,所以这就是为什么np.split速度很慢。


推荐阅读