擅长:python、mysql、java
<pre><code>zip(*someList)[0]
</code></pre>
<p>编辑:</p>
<p>对recursive的注释的响应:也可以使用</p>
<pre><code>from itertools import izip
izip(*someList).next()
</code></pre>
<p>为了更好的表现。</p>
<p>一些时间分析:</p>
<pre><code>python -m timeit "someList = [range(1000000), range(1000000), range(1000000)]; newlist = zip(*someList)[0]"
10 loops, best of 3: 498 msec per loop
python -m timeit "someList = [range(1000000), range(1000000), range(1000000)]; from itertools import izip; newlist = izip(*someList).next()"
10 loops, best of 3: 111 msec per loop
python -m timeit "someList = [range(1000000), range(1000000), range(1000000)]; newlist = [li[0] for li in someList]"
10 loops, best of 3: 110 msec per loop
</code></pre>
<p>所以伊兹普和列表理解在同一个联盟里玩。</p>
<p>当然,当需要0以外的索引时,列表理解更加灵活,并且更加明确。</p>
<p>编辑2:</p>
<p>即使是numpy解决方案也没有那么快(但我可能选择了一个不具代表性的例子):</p>
<pre><code>python -m timeit "import numpy as np; someList = np.array([range(1000000), range(1000000), range(1000000)]); newList = someList[:,0]"
10 loops, best of 3: 551 msec per loop
</code></pre>