📅  最后修改于: 2023-12-03 15:04:26.319000             🧑  作者: Mango
在Python中,我们经常需要对列表进行操作,其中一个常见的操作是将列表分割成子列表。本篇文章将介绍如何根据长度将一个字符串列表拆分为多个子列表。
def split_list(lst, n):
return [lst[i:i + n] for i in range(0, len(lst), n)]
这里我们定义了一个名为split_list
的函数,它接受两个参数,lst
是要分割的列表,n
是每个子列表的最大长度。
代码解释:
循环range(0, len(lst), n)
,步长为n
(即每个子列表的长度),每次获取lst
中的i
到i+n
个元素,将这些元素存入一个新的子列表中。
split_list(['a', 'b', 'c', 'd', 'e', 'f'], 2)
# [['a', 'b'], ['c', 'd'], ['e', 'f']]
import itertools
def split_list(lst, n):
return [list(group) for key, group in itertools.groupby(lst, lambda x: (lst.index(x)//n))]
代码解释:
通过itertools.groupby()函数将列表按照每个子列表的长度分组,lambda x: (lst.index(x)//n)
将相邻索引整除以n
,判断相邻元素是否处于同一个子列表。然后将每个组转换成一个列表并返回。
split_list(['a', 'b', 'c', 'd', 'e', 'f'], 2)
# [['a', 'b'], ['c', 'd'], ['e', 'f']]
以上是两种将字符串列表拆分为子列表的方法,其中第一种方法使用循环和切片实现,代码简洁易懂,第二种方法使用itertools模块实现,代码复杂一些,但是可以处理更加复杂的情况。根据实际情况选择合适的方法即可。