1. 平分后每个子列表的元素个数为 n
def func(lst, n):
for i in range(0, len(lst), n):
yield lst[i:i+n]
if __name__ == '__main__':
lst = [1,2,3,4,5,6,7,8,9]
temp = func(lst, 4)
print(temp) # 打印出一个生成器
for i in temp:
print(i)
执行结果:
<generator object func at 0x000001E499DA7350>
[1, 2, 3, 4]
[5, 6, 7, 8]
[9]
2. 将一个列表平分为n个子列表
def splited_list(ls,n):
if not isinstance(ls,list) or not isinstance(n,int):
return []
ls_len = len(ls)
if n<=0 or 0==ls_len:
return []
if n > ls_len:
return []
elif n == ls_len:
return [[i] for i in ls]
else:
j = ls_len//n
k = ls_len%n
### j,j,j,...(前面有n-1个j),j+k
#步长j,次数n-1
ls_return = []
for i in range(0,(n-1)*j,j):
ls_return.append(ls[i:i+j])
#算上末尾的j+k
ls_return.append(ls[(n-1)*j:])
return ls_return
if __name__ == '__main__':
lst = [1,2,3,4,5,6,7,8,9]
rlt = splited_list(lst, 4)
print(rlt)
本文介绍了如何使用Python编写函数,通过生成器和切片操作将列表均匀分割成指定数量的子列表。首先,`func` 函数演示了如何利用生成器yield创建子列表,然后`splited_list`函数处理列表切分,适用于不同长度和子列表数的情况。
1万+

被折叠的 条评论
为什么被折叠?



