我已经尝试寻找解决方案,但我对精确术语的无知无济于事,希望问题的标题和下面的代码足以解释。
这是我到目前为止的工作:
C = [1,1,1,1,2,3,1,1,1,2,1]
sub_C = []
chunked_C = []
counter = 0
for i in C:
counter += i
if counter <= 3:
sub_C.append(i)
else:
chunked_C.append(list(sub_C))
del sub_C[:]
counter = i
sub_C.append(i)
print chunked_C
我希望 chunked_C 产生: [[1,1,1],[1,2],[3],[1,1,1],[2,1]]
不知道我哪里出错了,也许有人可以帮忙。
编辑:我已经纠正了错别字。
还:
稍微修改一下,我也需要对列表的不完整尾部进行分块,即值小于 3 但我用完了数字。
例如:
C = [1,1,1,1,2,3,1,1,1,2,1,1]
so chunked_C = [[1,1,1],[1,2],[3],[1,1,1],[2,1],[1]]
希望这是有道理的。
进一步修订:
如果 C = [1,1,1,1,1,2,3,1,1,1,2,1]
chunked_C 将等于 [[1,1,1],[1,1],[2],[3],[1,1,1],[2,1]]
所以我想逻辑需要进一步修改。