首先实现多层列表转为一层列表 使用到的方法为递归
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))
我写的结果列表为函数外部的全局变量 这种方法显然有点效率不高 但是比较通俗易懂 大家可以讨论下第一种实现方式的作用和优点