cc9542 2022-06-10 13:54 采纳率: 96.7%
浏览 48
已结题

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]]
  • 写回答

3条回答 默认 最新

  • 请叫我问哥 Python领域新星创作者 2022-06-10 14:07
    关注

    我感觉题目的意思好像是一定要均分,如果不能均分的话就按最大能均分多少来算
    比如例子里的列表只有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))
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 6月25日
  • 已采纳回答 6月17日
  • 创建了问题 6月10日

悬赏问题

  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题