2011-12-16 18 views
6

Xから始まりYでインクリメントする10個の値を持つ配列を初期化したいとします。range()は値の数ではなく最大値を与えるために必要です。Pythonでの配列の初期化

次のように私は、ループ内でこれを行うことができます:

a = [] 
v = X 
for i in range(10): 
    a.append(v) 
    v = v + Y 

しかし、私はこれを行うにはかわいいのpython 1ライナーがあります確信している...

答えて

14
>>> x = 2 
>>> y = 3 
>>> [i*y + x for i in range(10)] 
[2, 5, 8, 11, 14, 17, 20, 23, 26, 29] 
8

あなたがこれを使用することができます:私が正しくあなたの質問を理解している場合

>>> x = 3 
>>> y = 4 
>>> range(x, x+10*y, y) 

[3, 7, 11, 15, 19, 23, 27, 31, 35, 39] 
+0

は、xとy –

1

Y = 6 
a = [x + Y for x in range(10)] 

編集:ああ、私は質問を誤解しています。続ける。

2

Y=6 
X=10 
N=10 
[y for x,y in zip(range(0,N),itertools.count(X,Y))] 
[10, 16, 22, 28, 34, 40, 46, 52, 58, 64] 

そして、さらに別の方法でそれを行うためのちょうど別の方法

map(lambda (x,y):y,zip(range(0,N),itertools.count(10,Y))) 
[10, 16, 22, 28, 34, 40, 46, 52, 58, 64] 

そして、まだ別の方法

import numpy 
numpy.array(range(0,N))*Y+X 
array([10, 16, 22, 28, 34, 40, 46, 52, 58, 64]) 

そして、これでも

C=itertools.count(10,Y) 
[C.next() for i in xrange(10)] 
[10, 16, 22, 28, 34, 40, 46, 52, 58, 64] 
+0

'numpy.array(レンジ...)'として山車でこれをしようとしない仕事をしますか? 'numpy.arange'を見てください。 – eumiro

+0

' np.arange(0、N)* Y + X 'は便利です。 – javadba