Slicing a list with variable chunk size in Python
本问题已经有最佳答案,请猛点这里访问。
我在python 3.6工作,我是一个初学者。所以谁能给我一个真正的方法,如何才能切片成可变大小的子列表列表。我从这个站点尝试了这个解决方案,但它给了我固定大小的切片列表。澄清:
如果我有这个清单:
1 | inputList= [0,1,2,3,4,5,6,7] |
我希望输出如下:
1 | outputList=[[0,1,2], [3,4], [5], [6,7]] |
每次都取决于(例如)用户输入或某些可变大小。
只需使用
1 2 3 4 5 6 7 | >>> import itertools as it >>> input_list = range(8) >>> slices = (3, 2, 1, 2) >>> iterable = iter(input_list) >>> output_list = [list(it.islice(iterable, sl)) for sl in slices] >>> output_list [[0, 1, 2], [3, 4], [5], [6, 7]] |
例如,如果您有
基本上,
您可以使用python的
假设用户的切片块大小输入存储在一个列表中。它们需要3、2、1和2的块,因此定义块的用户输入被存储到一个具有
然后,遍历该列表并使用它来获取切片:
1 2 3 4 5 6 7 | input_list = [0,1,2,3,4,5,6,7] chunk_list = [3,2,1,2] output_list = [] for i in chunk_list: output_list.append(input_list[:i]) input_list = input_list[i:] print(output_list) |
印刷品:
1 | [[0, 1, 2], [3, 4], [5], [6, 7]] |
也许你只是想学习切片。请参见了解Python的切片表示法
要获得示例输出,可以
1 | outputList = [inputList[:3], inputList[3:5], inputList[5:6], inputList[6:]] |