次のように、10年ごとにポイントを生成します
[3,6,9,30,60,90,300,600,900, .... 900000]
これを最も効率的な方法で行うにはどうすればよいですか?
ありがとう!
次のように、10年ごとにポイントを生成します
[3,6,9,30,60,90,300,600,900, .... 900000]
これを最も効率的な方法で行うにはどうすればよいですか?
ありがとう!
パフォーマンスについてはわかりませんが、これはワンライナーです。
>>> [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)))
最初の引数は各 10 年の増分で、2 番目の引数は 10 年の数です。