2. Flatten Nested List

使用itertools.chain生成迭代器循环,速度最快,输入为多个元素,如果输入是单元素需要解包 from_iterable输入为迭代器

import itertools
l = [[1,2,3],[4,5,6], [7], [8,9]]
[*itertools.chain.from_iterable(l)]
[*itertools.chain(*l)]
[me@home]$ python -mtimeit -s'l=[[1,2,3],[4,5,6], [7], [8,9]]*99;import itertools' 'list(itertools.chain.from_iterable(l))'
10000 loops, best of 3: 24.2 usec per loop
[me@home]$ python -mtimeit -s'l=[[1,2,3],[4,5,6], [7], [8,9]]*99' '[item for sublist in l for item in sublist]'
10000 loops, best of 3: 45.2 usec per loop
[me@home]$ python -mtimeit -s'l=[[1,2,3],[4,5,6], [7], [8,9]]*99' 'sum(l, [])'
1000 loops, best of 3: 488 usec per loop
[me@home]$ python -mtimeit -s'l=[[1,2,3],[4,5,6], [7], [8,9]]*99' 'reduce(lambda x,y: x+y,l)'
1000 loops, best of 3: 522 usec per loop

reference:

https://stackoverflow.com/questions/952914/how-to-make-a-flat-list-out-of-list-of-lists#