📅  最后修改于: 2023-12-03 15:34:09.089000             🧑  作者: Mango
有时候,我们需要将一个列表拆分成若干个较小的列表,以方便进行后续的操作。其中,除了最后一个小列表可能少于指定的大小外,其余的小列表应该都是指定的大小。
比如,我们有一个列表:
my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
我们希望将其拆分成长度为3的小列表,则结果应该为:
[
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
[10, 11]
]
下面是一个实现这个功能的 Python 代码实例:
def split_list(my_list, size):
"""
将指定大小的列表拆分成若干个小列表
"""
return [my_list[i:i+size] for i in range(0, len(my_list), size)]
my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
result = split_list(my_list, 3)
print(result)
代码说明:
split_list
的函数,该函数接受两个参数,分别为待拆分的列表 my_list
和每个小列表的长度 size
;range(0, len(my_list), size)
生成一个从0开始,步长为size
的数列,作为列表的索引。my_list[i:i+size]
依次截取这些索引所指定的小列表,最终返回一个包含这些小列表的新列表。代码输出:
[[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11]]
这里还有几个容易出错的点需要注意:
my_list[i:i+size]
,因为当 i+size
超出列表的下标时,会出现 IndexError
异常。因此,在列表切片操作时,需要使用 my_list[i:min(i+size, len(my_list))]
这样的形式,来确保不会出现越界问题;range
函数的三个参数:起始值 0、结束值 len(my_list)
和步长 size
,而不是使用 while 循环来计算;接下来请你可以试着将这个代码块转换成合适的Markdown渲染。
def split_list(my_list, size):
"""
将指定大小的列表拆分成若干个小列表
"""
return [my_list[i:min(i+size, len(my_list))] for i in range(0, len(my_list), size)]