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

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条)

报告相同问题?

悬赏问题

  • ¥15 通联支付网上收银统一下单接口
  • ¥15 angular有偿编写,
  • ¥15 VB.NET使用保存对话框保存图片?
  • ¥15 centos7系统下abinit安装时make出错
  • ¥15 hbuildex运行微信小程序报错
  • ¥15 关于#python#的问题:我知道这个问题对你们来说肯定so easy
  • ¥15 wpf datagrid如何实现多层表头
  • ¥15 为啥画版图在Run DRC会出现Connect Error?可我Calibre的hostname和计算机的hostname已经设置成一样的了。
  • ¥20 网站后台使用极速模式非常的卡
  • ¥20 Keil uVision5创建project没反应