Инициализация массива в Python
Я хочу инициализировать массив с 10 значениями, начинающимися с X и увеличивающимися на Y. Я не могу напрямую использовать range()
как это требуется, чтобы дать максимальное значение, а не количество значений.
Я могу сделать это в цикле, как показано ниже:
a = []
v = X
for i in range(10):
a.append(v)
v = v + Y
но я уверен, что для этого есть симпатичный python one liner ...
5 ответов
вы можете использовать это:
>>> x = 3
>>> y = 4
>>> range(x, x+10*y, y)
[3, 7, 11, 15, 19, 23, 27, 31, 35, 39]
просто еще один способ сделать это
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]
Если я правильно понял ваш вопрос:
Y = 6
a = [x + Y for x in range(10)]
Edit: О, я вижу, что неправильно понял вопрос. Продолжать.