自定义一个递归函数 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 代码(请注意:不要出现中文)
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 !')
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632