Python 将数组拆分为正数和负数,同时保持列表结构

我遇到了这个问题,我必须在保留列表结构的同时拆分负数和正数列表。

零被认为是积极的

例子:

输入数据

[1,  1,  1, -2, -2, -2,  1,  1,  1, -2, -2, -2,  1,  1,  1]

输出数据

[[1,  1,  1], [-2, -2, -2], [1,  1,  1], [-2, -2, -2], [1,  1,  1]]

任何人都可以请给我一个好的方向,哪个是解决这个问题的好方法?

我已经研究np.split过条件或切片条件,但也没有运气。


明月笑刀无情
浏览 151回答 2
2回答

繁星coding

如果没有进一步的研究,我会使用标准库中的itertools.groupby。不过也许有更好的解决方案。import itertoolsvals = [1,&nbsp; 1,&nbsp; 1, -2, -2, -2,&nbsp; 1,&nbsp; 1,&nbsp; 1, -2, -2, -2,&nbsp; 1,&nbsp; 1,&nbsp; 1]splitted = [list(g) for i, g in itertools.groupby(vals,lambda x: x<0)]如评论中所述,您必须选择如何处理 0 并相应地调整 lambda。

GCT1015

您可以使用熊猫:import pandas as pdl = [1,&nbsp; 1,&nbsp; 1, -2, -2, -2,&nbsp; 1,&nbsp; 1,&nbsp; 1, -2, -2, -2,&nbsp; 1,&nbsp; 1,&nbsp; 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]),&nbsp;array([-2, -2, -2]),&nbsp;array([1, 1, 1]),&nbsp;array([-2, -2, -2]),&nbsp;array([1, 1, 1])]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python