2011-12-16 57 views
6

我想初始化一個數組,其中10個值從X開始,然後遞增Y.我不能直接使用range(),因爲它需要給出最大值,而不是數值個數。Python中的數組初始化

我可以在一個循環做到這一點,如下所示:

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

但我敢肯定有一個可愛的蟒蛇一個襯墊做到這一點...

回答

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 – 2011-12-16 14:59:42

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 2011-12-16 15:58:23

2
[x+i*y for i in xrange(1,10)] 

將做的工作