<p>您可以使用<a href="http://docs.python.org/library/itertools.html#itertools.chain" rel="noreferrer">^{<cd1>}</a>:</p>
<pre><code>>>> import itertools
>>> list2d = [[1,2,3], [4,5,6], [7], [8,9]]
>>> merged = list(itertools.chain(*list2d))
</code></pre>
<p>或者您可以使用<a href="http://docs.python.org/library/itertools.html#itertools.chain.from_iterable" rel="noreferrer">^{<cd2>}</a>,它不需要使用<code>*</code>运算符来解压缩列表:</p>
<pre><code>>>> import itertools
>>> list2d = [[1,2,3], [4,5,6], [7], [8,9]]
>>> merged = list(itertools.chain.from_iterable(list2d))
</code></pre>
<p>这种方法可以说比<code>[item for sublist in l for item in sublist]</code>更具可读性,而且似乎也更快:</p>
<pre><code>$ python3 -mtimeit -s'l=[[1,2,3],[4,5,6], [7], [8,9]]*99;import itertools' 'list(itertools.chain.from_iterable(l))'
20000 loops, best of 5: 10.8 usec per loop
$ python3 -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 5: 21.7 usec per loop
$ python3 -mtimeit -s'l=[[1,2,3],[4,5,6], [7], [8,9]]*99' 'sum(l, [])'
1000 loops, best of 5: 258 usec per loop
$ python3 -mtimeit -s'l=[[1,2,3],[4,5,6], [7], [8,9]]*99;from functools import reduce' 'reduce(lambda x,y: x+y,l)'
1000 loops, best of 5: 292 usec per loop
$ python3 --version
Python 3.7.5rc1
</code></pre>