-4

我将在每个十年中产生积分,例如

[3,6,9,30,60,90,300,600,900, .... 900000]

我怎样才能以最有效的方式做到这一点?

谢谢!

4

3 回答 3

7

我不知道性能,但这是一个 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]
于 2013-06-13T18:30:22.973 回答
0
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]
于 2013-06-13T18:31:14.057 回答
0

你可以为它创建一个生成器:

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)))

第一个参数是每十年的增量,第二个参数是几十年的数量。

于 2013-06-13T18:37:31.810 回答