2011-12-16 19 views
6

Quiero inicializar una matriz con 10 valores que comienzan en X y se incrementan en Y. No puedo usar directamente range() como se requiere para dar el valor máximo, no el número de valores.Inicialización de la matriz en Python

puedo hacer esto en un bucle, de la siguiente manera:

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

Pero estoy seguro de que hay una linda pitón un trazador de líneas para hacer esto ...

Respuesta

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

Puede utilizar esta :

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

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

no intentar esto con flotadores como X e Y –

1

Si he entendido bien su pregunta:

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

Editar: Oh, veo que he entendido mal la pregunta. Continua.

2

Sólo otra manera de hacerlo

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] 

Y sin embargo, otra forma

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

Y sin embargo, otra forma

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

E incluso esta

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 (rango ...)'? Eche un vistazo a 'numpy.arange' – eumiro

+0

El' np.arange (0, N) * Y + X 'es útil. – javadba

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

hará el trabajo

Cuestiones relacionadas