自定义一个递归函数 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条回答 默认 最新
- CSDN专家-天际的海浪 2021-05-16 21:32关注
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无用