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

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

如何使用遞歸將列表拆分成塊?

如何使用遞歸將列表拆分成塊?

喵喔喔 2021-11-16 16:34:41
有一個 int 增加的列表,我想逐步將其分成塊,如下所示:for i in range(0, len(intlist), length):    chunks.append(intlist[i, i+length])但是塊中的每個列表都必須匹配list[-1] - list[0] < 20。如果不匹配,請嘗試chunks.append(intlist[i, i+length-1])例如:chunks = []intlist = [2, 4, 5, 18, 23, 24, 67, 72, 77, 83, 84, 90]  # item keep increasefor i in range(0, len(intlist), 4):    chunks.append(intlist[i:i+4])# output# item in chunks[2, 4, 5, 18]  # step 4 match[23, 24]  # 67-23>20 don't mach[67, 72, 77, 84] # match[90]特別地,len(i) 必須小于參數長度,不能太長
查看完整描述

2 回答

?
慕桂英546537

TA貢獻1848條經驗 獲得超10個贊

此任務不需要遞歸。您可以簡單地遍歷列表并繼續將當前項目與最后一個塊的第一個項目進行比較,如果差異大于或等于 20 或最后一個塊已達到您的最大塊大小,則附加一個新的子列表:


intlist = [2, 4, 5, 18, 23, 24, 67, 72, 77, 83, 84, 90]

chunks = []

for i in intlist:

    if not chunks or i - chunks[-1][0] >= 20 or len(chunks[-1]) == 4:

        chunks.append([])

    chunks[-1].append(i)

chunks 變成:


[[2, 4, 5, 18], [23, 24], [67, 72, 77, 83], [84, 90]]


查看完整回答
反對 回復 2021-11-16
?
至尊寶的傳說

TA貢獻1789條經驗 獲得超10個贊

我不確定我是否理解您的問題,但這里有一行可能可以解決您的問題。希望就是這樣!


int_list = [1,2,3,4,5,6,7,5,8,45,2,1,43,6,7,3]

chunks_size = 4

chuncks = [int_list[chunks_size*i:chunks_size*(i+1)] for i in range(int(len(int_list) / chunks_size) + 1)]



查看完整回答
反對 回復 2021-11-16
  • 2 回答
  • 0 關注
  • 248 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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