list_in = [1,2,[3,4],5,[6,7,[8,9,10]]]
new_list = []
def unfold_list(l):
for x in l:
if isinstance(x, list):
unfold_list(x)
else:
new_list.append(x)
unfold_list(list_in)
print(new_list)
new_l=[]
def flatten(lists):
for i in lists:
if isinstance(i,list):
flatten(i)
else:
new_l.append(i)
return new_l
list2d = [1,2,[3,4],5,[6,7,[8,9,10]]]
print(flatten(list2d))
4条答案
按热度按时间smtd7mpg1#
我认为这个问题非常适合递归:
ftf50wuq2#
基本上,您可以遍历列表,查看当前元素本身是否是列表。如果不是,则将其添加到新列表中。如果是,则迭代列表并重复。
这不是最好的、最小的或最常用的python方式,但这种方式可能有助于您理解它:
关于barmar对sujay回答的评论,请注意:确实应该避免使用globals。我上面的代码纯粹是为了帮助理解问题和(其中一个)解决方案。
g9icjywg3#
看看这个:
nwo49xxi4#
试试这个