我将在每个十年中产生积分,例如
[3,6,9,30,60,90,300,600,900, .... 900000]
我怎样才能以最有效的方式做到这一点?
谢谢!
我不知道性能,但这是一个 1-liner:
>>> [x*10**pow for pow in range(6) for x in range(3,10,3)]
[3, 6, 9, 30, 60, 90, 300, 600, 900, 3000, 6000, 9000, 30000, 60000, 90000, 300000, 600000, 900000]
在 python2.x 上,xrange
也可以:
>>> [x*10**pow for pow in xrange(6) for x in xrange(3,10,3)]
[3, 6, 9, 30, 60, 90, 300, 600, 900, 3000, 6000, 9000, 30000, 60000, 90000, 300000, 600000, 900000]
def func(zeros):
for i in xrange(zeros):
yield int('3'+'0'*i)
yield int('6'+'0'*i)
yield int('9'+'0'*i)
...
>>> list(func(6))
[3, 6, 9, 30, 60, 90, 300, 600, 900, 3000, 6000, 9000, 30000, 60000, 90000, 300000, 600000, 900000]
你可以为它创建一个生成器:
def decade(n,m):
dec = 0
while dec < m:
num = n
while num < 10:
yield num*pow(10,dec)
num += n
dec += 1
print(list(decade(3,4)))
第一个参数是每十年的增量,第二个参数是几十年的数量。