Инициализация массива в Python - PullRequest
6 голосов
/ 16 декабря 2011

Я хочу инициализировать массив с 10 значениями, начинающимися с X и увеличивающимися на Y. Я не могу напрямую использовать range(), так как для этого требуется указать максимальное значение, а не количество значений.

Я могу сделать это в цикле следующим образом:

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

Но я уверен, что для этого есть симпатичный лайнер на Питоне ...

Ответы [ 5 ]

15 голосов
/ 16 декабря 2011
>>> x = 2
>>> y = 3
>>> [i*y + x for i in range(10)]
[2, 5, 8, 11, 14, 17, 20, 23, 26, 29]
8 голосов
/ 16 декабря 2011

Вы можете использовать это:

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

[3, 7, 11, 15, 19, 23, 27, 31, 35, 39]
2 голосов
/ 16 декабря 2011
[x+i*y for i in xrange(1,10)]

сделает работу

2 голосов
/ 16 декабря 2011

Просто еще один способ сделать это

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]
1 голос
/ 16 декабря 2011

Если я правильно понял ваш вопрос:

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

Редактировать: О, я понимаю, я неправильно понял вопрос. Продолжайте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...