【发布时间】:2011-10-04 11:41:11
【问题描述】:
可能的重复:
Making a flat list out of list of lists in Python
Flatten (an irregular) list of lists in Python
输入一个列表如:[1,2,[3,4,[5,6,7,[8]]],[9],10]
期望的输出:[1,2,3,4,5,6,7,8,9,10]
目前我有以下递归函数:
def fix_list( li , l = [] ):
for i in li:
try:
len( i )
fix_list( i, l )
except:
l.append( i )
return l
我觉得 try/except 捕获有点花哨和缓慢,我想知道是否有更好/更优化的方法来执行此任务。非常感谢所有输入。
【问题讨论】:
-
你也可以试试 if type(i) == type(1).
-
一旦你弄清楚你的函数使用 timeit 模块有多慢(或不慢),就很容易了。
-
我喜欢这个问题,因为答案说明了对生成器的良好使用,而不是返回一个全新的列表。
标签: python list optimization recursion