<p>这样的列表列表可以使用<a href="http://docs.python.org/tutorial/datastructures.html#list-comprehensions" rel="noreferrer">list comprehension</a>构造:</p>
<pre><code>In [17]: seq=[1,2,3,4,5,6,7,8]
In [18]: [seq[i:i+3] for i in range(0,len(seq),3)]
Out[18]: [[1, 2, 3], [4, 5, 6], [7, 8]]
</code></pre>
<p>还有<a href="http://docs.python.org/library/itertools.html#recipes" rel="noreferrer">grouper idiom</a>:</p>
<pre><code>In [19]: import itertools
In [20]: list(itertools.izip_longest(*[iter(seq)]*3))
Out[20]: [(1, 2, 3), (4, 5, 6), (7, 8, None)]
</code></pre>
<p>但请注意,缺少的元素都用值None填充。<a href="http://docs.python.org/library/itertools.html#itertools.izip_longest" rel="noreferrer">izip_longest</a>也可以使用<code>fillvalue</code>参数,前提是不需要任何参数。</p>
<hr/>
<p><code>list1+=[list2]</code>——这次注意括号——相当于<code>list1.append(list2)</code>。我写代码的最高优先级是可读性,
不是速度。出于这个原因,我会选择<code>list1.append(list2)</code>。然而,可读性是主观的,而且可能会受到你所熟悉的成语的很大影响。</p>
<p>令人高兴的是,在这种情况下,可读性和速度似乎是一致的:</p>
<pre><code>In [41]: %timeit list1=[1,2,3]; list1.append(list2)
1000000 loops, best of 3: 612 ns per loop
In [42]: %timeit list1=[1,2,3]; list1+=[list2]
1000000 loops, best of 3: 847 ns per loop
</code></pre>