递归方法
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]