# Python提取嵌套列表的所有元素

239 篇文章 2 订阅

### 递归方法

alist = [1, 2, ['a', ['b2'], ['cc', 5, 8, [10]]]]

def all_ele(lis):
result_list = []
for i in lis:
if type(i) == list:
result_list += all_ele(i)
else:
result_list.append(i)
return result_list

print(all_ele(alist))


[1, 2, 'a', 'b2', 'cc', 5, 8, 10]


### 非递归方法1

alist = [1, 2, ['a', ['b2'], ['cc', 5, 8, [10]]]]

def flatten(lst):
i = 0
while (i < len(lst)):
if isinstance(lst[i], list):
lst.extend(lst[i])
i += 1
return [n for n in lst if not isinstance(n, list)]

print(flatten(alist))


[1, 2, 'a', 'b2', 'cc', 5, 8, 10]


### 非递归方法2

alist = [1, 2, ['a', ['b2'], ['cc', 5, 8, [10]]]]

def flatten(lst):
result = []
while True:
temp_lst = []
finish_flag = True
for i in lst:
if isinstance(i, list):
finish_flag = False
temp_lst.extend(i)
else:
result.append(i)
if finish_flag:
break
lst = temp_lst
return result

print(flatten(alist))


[1, 2, 'a', 'b2', 'cc', 5, 8, 10]

• 5
点赞
• 16
收藏
觉得还不错? 一键收藏
• 0
评论
02-16 3019
02-27 1287
03-16 4675
06-17 730
09-30 1481
02-22 3190
08-19 316
02-04 820

1.余额是钱包充值的虚拟货币，按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载，可以购买VIP、付费专栏及课程。