如果我在Python中创建一个列表并想编写一个函数,只返回1到x范围内的奇数,我该怎么做?
例如,如果我从1到4(4 ix my x)列表[1,2,3,4],我想返回[1,3].
Ale*_*lli 14
如果您想以任意列表开头:
[item for item in yourlist if item % 2]
Run Code Online (Sandbox Code Playgroud)
但如果你总是开始range,range(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
Run Code Online (Sandbox Code Playgroud)
因此,在这种情况下,正确的方法比某种典型的错误方法快约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
Run Code Online (Sandbox Code Playgroud)
只是样本错误的两倍,但仍然比"恰到好处"的速度快15倍! - )
| 归档时间: |
|
| 查看次数: |
11868 次 |
| 最近记录: |