繁星點(diǎn)點(diǎn)滴滴
2022-10-06 15:44:37
有什么方法可以將列表拆分為某個(gè)值 - 本質(zhì)上是列表的 string.split() 。例子:[1, 2, 4, 3, 5, 2, 5]會回來[[1], [4, 3, 5], [5]]我可以想到一些速度很慢的解決方案,但我正在使用它來嘗試加速代碼,因此如果它在大約 10,000 個(gè)?。▊€(gè)位數(shù))數(shù)字長度的列表上運(yùn)行緩慢,那么它不會真的有幫助,我想到了一個(gè)簡單的解決方案,比如list1 = [1, 2, 4, 3, 5, 2 etc.]list2 = []for i, val in enumerate(list1): if val == 2: list2.append([]) else: list2[len(list2)-1].append(val)但我不確定這真的非???。有沒有更好的辦法?
2 回答

躍然一笑
TA貢獻(xiàn)1826條經(jīng)驗(yàn) 獲得超6個(gè)贊
好吧,我能想到的是使用 list.index() 和切片。
sep = somevalue
result = []
while sep in yourlist:
sep_index = list.index(sep)
result.append(list[:sep_index])
result = result[sep_index+1:]
這應(yīng)該通過您設(shè)置的任何 sep 值分隔一個(gè)長列表

暮色呼如
TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超9個(gè)贊
我喜歡itertools.groupby
這個(gè)。較長的列表易于閱讀、快速且內(nèi)存高效:
from itertools import groupby
l = [1, 2, 4, 3, 5, 2, 5]
[list(g) for k, g in groupby(l, key=lambda x: x!=2) if k]
# [[1], [4, 3, 5], [5]]
添加回答
舉報(bào)
0/150
提交
取消