2 回答
繁星coding
TA贡献1797条经验 获得超4个赞
如果没有进一步的研究,我会使用标准库中的itertools.groupby。不过也许有更好的解决方案。
import itertools
vals = [1, 1, 1, -2, -2, -2, 1, 1, 1, -2, -2, -2, 1, 1, 1]
splitted = [list(g) for i, g in itertools.groupby(vals,lambda x: x<0)]
如评论中所述,您必须选择如何处理 0 并相应地调整 lambda。
GCT1015
TA贡献1827条经验 获得超4个赞
您可以使用熊猫:
import pandas as pd
l = [1, 1, 1, -2, -2, -2, 1, 1, 1, -2, -2, -2, 1, 1, 1]
s = pd.Series(l)
s.groupby(s.diff().ne(0).cumsum()).agg(list).tolist()
输出:
[[1, 1, 1], [-2, -2, -2], [1, 1, 1], [-2, -2, -2], [1, 1, 1]]
使用 numpy 的另一种解决方案:
np.split(l, np.diff(l).nonzero()[0]+1)
输出:
[array([1, 1, 1]),
array([-2, -2, -2]),
array([1, 1, 1]),
array([-2, -2, -2]),
array([1, 1, 1])]
添加回答
举报
0/150
提交
取消