2 回答

TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超4個(gè)贊
如果沒(méi)有進(jìn)一步的研究,我會(huì)使用標(biāo)準(zhǔn)庫(kù)中的itertools.groupby。不過(guò)也許有更好的解決方案。
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)]
如評(píng)論中所述,您必須選擇如何處理 0 并相應(yīng)地調(diào)整 lambda。

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超4個(gè)贊
您可以使用熊貓:
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])]
添加回答
舉報(bào)