m0_58315072 2021-05-16 21:17 采纳率: 33.3%
浏览 132
已采纳

python嵌套列表

自定义一个递归函数 unpack(lst) ,参数为一个列表,其中列表可能包含嵌套列表。该函数的作用就是将嵌套列表中的元素解放出来,最后生成一个无嵌套结构的简单列表。例如: lst=[[1,7,4,6],[5,9,4,2],[88,3,3,1],[88,[31,45,[43,17],19,17],12,1]] 最后解包后的列表为 [1, 7, 4, 6, 5, 9, 4, 2, 88, 3, 3, 1, 88, 31, 45, 43, 17, 19, 17, 12, 1] 由于嵌套列表的嵌套层数不限,最好的解决方法就是 使用 递归函数解决问题。 主程序首先使用 lst=eval(input()) 让用户输入一个嵌套列表,然后定义一个全局变量如 datalist赋值为空列表。为安全期间,在转换之前先判断输入的数据是否为列表,若是列表,则调用自定义函数 unpack(lst) 进行解包数据,不是列表则提示:I need a list of lists ! Please check your input ! 关于递归函数的处理流程: 循环访问lst中的元素,若不是列表,则直接将该元素添加到datalist列表中;若是列表则递归调用unpack函数解包当前元素。 输入描述 [[1,7,4,6],[5,9,4,2],[88,3,3,1],[88,[31,45,[43,17],19,17],12,1]] 输出描述 [1, 7, 4, 6, 5, 9, 4, 2, 88, 3, 3, 1, 88, 31, 45, 43, 17, 19, 17, 12, 1] 样例输入1: [[1,7,4,6],[5,9,4,2],[88,3,3,1],[88,[31,45,[43,17],19,17],12,1]] 样例输出1: [1, 7, 4, 6, 5, 9, 4, 2, 88, 3, 3, 1, 88, 31, 45, 43, 17, 19, 17, 12, 1] 样例输入2: 7 样例输出2: I need a list of lists ! Please check your input ! 语言 Python 代码(请注意:不要出现中文)

  • 写回答

2条回答 默认 最新

  • 关注
    datalist = []
    def unpack(ls):
        for v in ls:
            if type(v) is list:
                unpack(v)
            else:
                datalist.append(v)
    
    lst=eval(input())
    if type(lst) is list:
        unpack(lst)
        print(datalist)
    else:
        print('I need a list of lists ! Please check your input !')
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥35 平滑拟合曲线该如何生成
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 自己瞎改改,结果现在又运行不了了
  • ¥15 链式存储应该如何解决
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站