10000 loops of a = np.arange(1, 20000, 2), a = np.sin(a*pi/2)*a:
1.8311045169830322 s.
10000 loops of a = np.arange(1, 20000, 2), a = np.where(a%4==1, a, -a):
1.0180583000183105 s.
10000 loops of [i if (i%4==1) else -i for i in range(1, 20000, 2)]:
11.047631978988647 s.
10000 loops of [-(i*2+1) if (i&1) else (i*2+1) for i in range(10000)]:
21.168210744857788 s.
10000 loops of [-(i*2+1) if (i%2) else (i*2+1) for i in range(10000)]:
19.10609269142151 s.
10000 loops of [(-1)**i*(2*i+1) for i in range(10000)]:
73.45320105552673 s.
10000 loops of [(-1)**(i&1)*(i*2+1) for i in range(10000)]:
57.76730442047119 s.
10000 loops of [(-1)**(i%2)*(2*i+1) for i in range(10000)]:
58.772361278533936 s.
期待更快的答案出现。
【 在 callmebbser (BBSer) 的大作中提到: 】
: 标 题: Re: 如何优雅的生成类似[1,-3,5,-7……]这样的序列
: 发信站: 水木社区 (Sun Jun 14 08:35:45 2020), 站内
:
: 这个目前是最快的。
:
:
: 【 在 Krank (男兒到死心如鐵) 的大作中提到: 】
: : 标 题: Re: 如何优雅的生成类似[1,-3,5,-7……]这样的序列
: : 发信站: 水木社区 (Sun Jun 14 04:05:50 2020), 站内
: :
: : 你這個用搜索的會慢得令人髮指吧。
: : 【 在 roy (天上掉大饼:学思行言) 的大作中提到: 】
: : : 既然用numpy了,可以这样写
: : : lst=np.arange(1,n+1,2)
: : : lst2=np.where(lst%4==1,lst,-lst)
: : : ...................
: :
: : --
: :
: : ※ 来源:·水木社区 newsmth.net·[FROM: 73.229.62.*]
:
:
: --
:
: ※ 来源:·水木社区 newsmth.net·[FROM: 58.23.245.*]
--
FROM 58.23.245.*
附件(2.1KB) ta.py