1 回答
TA贡献1835条经验 获得超7个赞
您可以使用itertools.chain.from_iterable:
>>> from itertools import chain
>>> list(chain.from_iterable(animals))
['dog', 'cat', 'mouse', 'bird']
或嵌套的list comprehension:
>>> [anim for item in animals for anim in item]
['dog', 'cat', 'mouse', 'bird']
对于小型列表,请使用列表理解版本,否则请使用itertools.chain.from_iterable。
>>> animals = [('dog', 'cat'), ('mouse', 'bird')]
>>> %timeit list(chain.from_iterable(animals))
100000 loops, best of 3: 2.31 us per loop
>>> %timeit [anim for item in animals for anim in item]
1000000 loops, best of 3: 1.13 us per loop
>>> animals = [('dog', 'cat'), ('mouse', 'bird')]*100
>>> %timeit list(chain.from_iterable(animals))
10000 loops, best of 3: 31.5 us per loop
>>> %timeit [anim for item in animals for anim in item]
10000 loops, best of 3: 73.7 us per loop
>>> animals = [('dog', 'cat'), ('mouse', 'bird')]*1000
>>> %timeit list(chain.from_iterable(animals))
1000 loops, best of 3: 296 us per loop
>>> %timeit [anim for item in animals for anim in item]
1000 loops, best of 3: 733 us per loop
添加回答
举报