-4

次のように、10年ごとにポイントを生成します

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

これを最も効率的な方法で行うにはどうすればよいですか?

ありがとう!

4

3 に答える 3

7

パフォーマンスについてはわかりませんが、これはワンライナーです。

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

最初の引数は各 10 年の増分で、2 番目の引数は 10 年の数です。

于 2013-06-13T18:37:31.810 に答える