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)