python之实现多层嵌套列表转为一层列表讨论版

首先实现多层列表转为一层列表 使用到的方法为递归

1. 第一种实现方法-为网上找到的大佬写的方法
list1 = [[1, 2], [3, 4], [5, [6, [7, [8, [9, [10]]]]]]]


def flatten_list(list_1):
    """
    将嵌套列表展开为一维列表
    :param list_1: 嵌套列表
    :return: 一维列表
    """
    result = []
    for item in list_1:
        if isinstance(item, list):
            result.extend(flatten_list(item))
        else:
            result.append(item)
    return result


print(flatten_list(list1))
其中他的结果列表定义在函数内部 关键在于"result.extend(flatten_list(item))"的作用实在没有理解- 他递归的思想是理解了 不理解的是extend的用法
2. 第二种方法 - 作者写的作者能理解的版本
list1 = [[1, 2], [3, 4], [5, [6, [7, [8, [9, [10]]]]]]]

result_1 = []


def flatten_list(list_1):
    """
    将嵌套列表展开为一维列表
    :param list_1: 嵌套列表
    :return: 一维列表
    """
    for item in list_1:
        if isinstance(item, list):
            flatten_list(item)
        else:
            result_1.append(item)
    return result_1


print(flatten_list(list1))

我写的结果列表为函数外部的全局变量 这种方法显然有点效率不高 但是比较通俗易懂 大家可以讨论下第一种实现方式的作用和优点

你可能感兴趣的:(python,windows,开发语言)