擅长:python、mysql、java
<p>仅仅因为它是可以做到的,一个带有<code>itertools.compress()</code>的替代版本。我认为这比其他例子可读性差,所以我不推荐它。</p>
<pre><code>>>> list(itertools.compress(*zip(*enumerate([True, False, False, True, False, True], 1))))
[1, 4, 6]
</code></pre>
<p>编辑:</p>
<pre><code>python -m timeit -s "import itertools" -s "values = [True, False]*10000" "list(itertools.compress(*zip(*enumerate(values, 1))))"
100 loops, best of 3: 2.88 msec per loop
python -m timeit -s "import itertools" -s "values = [True, False]*10000" "[index for index, value in enumerate(values, 1) if value]"
1000 loops, best of 3: 1.11 msec per loop
</code></pre>
<p>明显较慢,事实上,所以绝对不能使用。</p>