[-(i * 2 + 1) if i & 1 else (i * 2 + 1) for i in range(10)] #这样写是速度快
[(-1) ** (i & 1) * (i * 2 + 1) for i in range(10)] #这样写我觉得可读性更好,但速度只有上面50%左右
更快一点的
[-(i << 2 + 1) if i & 1 else (i << 2 + 1) for i in range(10)]
[(2 - (i & 3)) * i for i in range(1, 10, 2)]
再快一点的,去掉了乘运算
[-i if (i & 3) == 3 else i for i in range(1, 10, 2)]
为正负号用itertools,太绕了,跟上面一样快
from itertools import cycle
[x[1] if x[0] else -x[1] for x in zip(cycle((True, False)), range(1, 10, 2)]
9楼ilovecpp的写法是最快的
from itertools import islice, chain, count
from math import ceil
list(islice(chain.from_iterable(zip(count(1, 4), count(-3, -4))), ceil(10 / 2)))
※ 修改:·sosei 于 Jun 16 15:56:47 2020 修改本文·[FROM: 60.1.11.*]
※ 来源:·水木社区
http://www.newsmth.net·[FROM: 60.1.11.*]
修改:sosei FROM 60.1.11.*
FROM 60.1.11.*