$ python -mtimeit -s't=[1,2,3],[4,5,6],[7],[8,9]*99' '[item for sublist in t for item in sublist]'10000 loops,best of 3: 143 usec per loop$ python -mtimeit -s't=[1,2,3],[4,5,6],[7],[8,9]*99' 'sum(t,[])'1000 loops,best of 3: 969 usec per loop$ python -mtimeit -s't=[1,2,3],[4,5,6],[7],[8,9]*99' 'reduce(lambda x,y: x y,t)'1000 loops,best of 3: 1.1 msec per loop $ ?& x3 I. S3 }) h( v+ q
说明:基于 (包括 )in 隐含使用sum)快捷的方法是,O(T**2)当有 T 个子列表-随着中间结果列表越来越长,每一步都会分配一个新的中间结果列表对象,所有项目都必须复制以前的中间结果(以及一些最终添加的新结果)。因此,假设每个子列表都有 k项目:前 k 项目来回复制 T-1 次,后 k 个项目 T-2 次,以此类推;从 1 到 T 排除的 x,总副本为 x 总和的 k 倍,即k * (T**2)/2。1 ]9 L+ X9 c1 T3 V
列表推导式只生成一个列表,复制每个项目(从原住所到结果列表)一次。