您当前的位置:首页 > 计算机 > 编程开发 > Python

Python使用递归对任意嵌套列表进行扁平化

时间:09-07来源:作者:点击数:

首先补充一个地方,之前有个文章演示的是猜数游戏,原文链接为猜数游戏用Python应该这样写,代码中漏掉了一个break语句,也就是说,在猜对的时候输出语句print('Congratulations!')后面应增加一个break,否则会让玩家继续猜,这是不合理的。

下面的今天的内容。

有时候可能会需要这样的功能:把任意深度的嵌套列表扁平化,例如把[1, 2, [3, [4]]]和[1, [2, [3, [4]]]]都变成[1, 2, 3, 4]的形式,由于提前无法确定列表的嵌套深度,这种情况比较适合使用递归来实现。演示代码如下:

def flatList(lst):

    result = []    #存放最终结果

    def nested(lst):#函数嵌套定义

        for item in lst:

            if isinstance(item, list):

                nested(item)#递归子列表

            else:

                result.append(item)#扁平化列表

    nested(lst) #调用嵌套定义的函数

    return result #返回结果

#测试

lst = [1, 2, 3, 4]

print(flatList(lst))

lst = [1, [2, 3], 4]

print(flatList(lst))

lst = [1, [2, [3, 4]]]

print(flatList(lst))

lst = [1, [2, [3, [4]]]]

print(flatList(lst))

以上几种形式的列表都将被扁平化为[1, 2, 3, 4]

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门