亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

按值拆分列表的快速方法?

按值拆分列表的快速方法?

繁星點點滴滴 2022-10-06 15:44:37
有什么方法可以將列表拆分為某個值 - 本質上是列表的 string.split() 。例子:[1, 2, 4, 3, 5, 2, 5]會回來[[1], [4, 3, 5], [5]]我可以想到一些速度很慢的解決方案,但我正在使用它來嘗試加速代碼,因此如果它在大約 10,000 個?。▊€位數)數字長度的列表上運行緩慢,那么它不會真的有幫助,我想到了一個簡單的解決方案,比如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貢獻1826條經驗 獲得超6個贊

好吧,我能想到的是使用 list.index() 和切片。


sep = somevalue

result = []

while sep in yourlist:

    sep_index = list.index(sep)

    result.append(list[:sep_index])

    result = result[sep_index+1:]

這應該通過您設置的任何 sep 值分隔一個長列表


查看完整回答
反對 回復 2022-10-06
?
暮色呼如

TA貢獻1853條經驗 獲得超9個贊

我喜歡itertools.groupby這個。較長的列表易于閱讀、快速且內存高效:


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]]


查看完整回答
反對 回復 2022-10-06
  • 2 回答
  • 0 關注
  • 94 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號