Python中块大小可变的列表切片

2024-04-20 08:20:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Python3.6中工作,我是个初学者。有谁能给我一个真正的方法,如何将一个列表分成可变大小的子列表。我从这个站点尝试了this解决方案,但它给了我固定大小的切片列表。澄清:

如果我有这个清单:

inputList= [0,1,2,3,4,5,6,7]

我希望输出如下所示:

^{pr2}$

每次都取决于(例如)用户输入或一些可变大小。在


Tags: 方法用户列表站点切片解决方案this初学者
3条回答

也许你只是想学一下切片。见Understanding Python's slice notation

要获得示例输出,可以执行以下操作

outputList = [inputList[:3], inputList[3:5], inputList[5:6], inputList[6:]]

只需使用^{}。这有一个额外的优点,如果您请求一个通常会使您超出边界的切片,则不会出现错误。你会得到尽可能多的物品。在

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

例如,如果有slices = (3, 2, 1, 3, 2),那么结果将是[[0, 1, 2], [3, 4], [5], [6, 7], []]。在

基本上,iter(input_list)创建列表的iterable,这样您就可以用islice()获取下一个k值。在

可以使用python的[:#]切片表示法在循环中执行此操作:

假设用户对块大小进行切片的输入存储在一个列表中。它们需要3、2、1和2的块,因此定义块的用户输入被存储到一个具有[3,2,1,2]的列表中。在

然后,循环查看该列表并使用它获取切片:

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)

印刷品:

^{pr2}$

相关问题 更多 >