如果我在 Python 中创建一个列表并想编写一个只返回 1 到 x 范围内的奇数的函数,我该怎么做?
例如,如果我有列表 [1, 2, 3, 4] 从 1 到 4(4 ix my x),我想返回 [1, 3]。
最佳答案
如果您想从任意列表开始:
[item for item in yourlist if item % 2]
但是如果你总是从 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
所以在这种情况下,正确的方法比典型的错误方法快 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 倍!-)
关于python - 获取列表中的每个奇数变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1780763/