有一個 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]]
至尊寶的傳說
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)]
添加回答
舉報
0/150
提交
取消
