如果您想以任意列表开头:
[item for item in yourlist if item % 2]
但如果你总是从范围开始,范围(1,x,2)更好! – )
例如:
$python -mtimeit -s'x=99' 'filter(lambda(t): t % 2 == 1, range(1, x))'
10000 loops, best of 3: 38.5 usec per loop
$python -mtimeit -s'x=99' 'range(1, x, 2)'
1000000 loops, best of 3: 1.38 usec per loop
因此,在这种情况下,正确的方法比某种典型的错误方法快约28倍(!).
如果你需要的话,“比你需要的更通用”解决方案:
$python -mtimeit -s'yourlist=range(1,99)' '[item for item in yourlist if item % 2]'
10000 loops, best of 3: 21.6 usec per loop
只是样本错误的两倍,但仍然比“恰到好处”的速度快15倍! – )