python 列表分割 定义一个函数,函数有两个值,一个是列表 一个是要分割的块数
def cl(list,c):
b = []
for i in range(0, len(list), c):
b.append(list[i:i + c])
return b
print(cl([1, 2, 3, 4, 5, 6, 7, 8, 9],4))
"""
[[1, 2, 3, 4], [5, 6, 7, 8], [9]]
进程已结束,退出代码为 0
"""
请问如何到达这种效果?
就是 给定块数是4块 ,但是分割的列表不能超过4
"""
错误输出结果
print(cl([1, 2, 3, 4, 5, 6, 7, 8, 9],4))
[[1, 2, 3, 4], [5, 6, 7, 8], [9]]
正确输出结果
print(cl([1, 2, 3, 4, 5, 6, 7, 8, 9],4))
[[1,2,3],[4,5,6],[7,8,9]]
我感觉题目的意思好像是一定要均分,如果不能均分的话就按最大能均分多少来算
比如例子里的列表只有9个元素,使用4均分分不了,所以只能按3来均分
不知道是不是这个意思
如果是这样的话,代码稍加修改就可以,还要注意只需要分成1个列表情况
def cl(list,c):
b = []
while len(list)%c>0:
c-=1
if c==1:return list[:]
for i in range(0, len(list), c):
b.append(list[i:i + c])
return b
print(cl([1, 2, 3, 4, 5, 6, 7, 8, 9],4))
要尽量均分吗
>>> def cl(lst, c):
return [lst[i:i+c] for i in range(0,len(lst),c)]
>>> a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> cl(a,4)
[[1, 2, 3, 4], [5, 6, 7, 8], [9]]
>>> cl(a,3)
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>> cl(a,2)
[[1, 2], [3, 4], [5, 6], [7, 8], [9]]