擅长:python、mysql、java
<p>更好的解决方案是使用<a href="http://docs.python.org/3.3/library/itertools.html#itertools.chain" rel="noreferrer">^{<cd1>}</a>而不是加法。这样,不必创建中间列表<code>list1 + list2</code>,然后创建另一个中间列表<code>list1 + list2 + list3</code>,只需创建没有中间元素的最终列表:</p>
<pre><code>allList = [x for x in itertools.chain(list1, list2, list3)]
</code></pre>
<p>然而,这样的空列表理解非常愚蠢;只需使用<code>list</code>函数将任意iterable转换为列表:</p>
<pre><code>allList = list(itertools.chain(list1, list2, list3))
</code></pre>
<p>或者,更好的是…如果您需要它的唯一原因是循环遍历它,那么只需将它作为迭代器:</p>
<pre><code>for thing in itertools.chain(list1, list2, list3):
do_stuff(thing)
</code></pre>
<hr/>
<p>当我们在做的时候,<a href="https://stackoverflow.com/questions/13906032/concatenate-3-lists-of-words">"similar question" you linked to</a>实际上是一个非常不同的、更复杂的问题。但是,因为<code>itertools</code>很酷,所以在Python中它仍然是一行代码:</p>
<pre><code>itertools.product(list1, list2, list3)
</code></pre>
<p>或者,如果要按问题指定的格式打印出来:</p>
<pre><code>print('\n'.join(map(' '.join, itertools.product(list1, list2, list3))))
</code></pre>