获取列表中的每个奇数变量?

Joh*_*ohn 4 python

如果我在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倍! - )