python 列表分割 定义一个函数

问题遇到的现象和发生背景

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]]