擅长:python、mysql、java
<p>你问的是效率问题。你可以用<a href="http://docs.python.org/library/timeit.html" rel="nofollow">timeit</a>来做这个。在</p>
<pre><code>>python -m timeit -s "a = [[1,2,3,4],[2,4,5,1],[3,4,6,2],[2,3,4,5]]" "zip(*a)"
1000000 loops, best of 3: 0.569 usec per loop
>python -m timeit -s "a = [[1,2,3,4],[2,4,5,1],[3,4,6,2],[2,3,4,5]]" "map(None, *a)"
1000000 loops, best of 3: 0.644 usec per loop
>python -m timeit -s "a = [[1,2,3,4],[2,4,5,1],[3,4,6,2],[2,3,4,5]]" "[[row[i] for row in a] for i in xrange(len(a[0]))]"
1000000 loops, best of 3: 1.43 usec per loop
>python -m timeit -s "from numpy import array; a = array([[1,2,3,4],[2,4,5,1],[3,4,6,2],[2,3,4,5]])" "a.transpose()"
1000000 loops, best of 3: 0.249 usec per loop
</code></pre>
<p>对于<code>[[1,2,3,4],[2,4,5,1],[3,4,6,2],[2,3,4,5]]*1000000</code>的大数据集</p>
^{pr2}$
<p>如果列表的长度不同,<code>zip</code>将截断为最短的长度。您可以使用'map'或<code>itertools.izip_longest</code>来用<code>None</code>来填充缺少的值。在</p>