ColeS ColeS - 3 months ago 8
Python Question

Adding values to sequentially spaced list in python?

I am fairly new to Python and am confused how to represent the following code from Matlab into Python:

P = [2:35,50,100,200]


In Matlab, this will spit out: P = [2,3,...,35,50,100,200] ; however, I can't seem to figure out how to easily add values to an a list with sequential numbering as is easily done in Matlab. Any suggestions would be great. Thanks!

Answer

Vanilla python doesn't have a dedicated syntax for this ... If you're working with lists, you need 2 steps:

lst = list(range(2, 36))
lst.extend([50, 100, 200])

If you have the "bleeding edge" (python3.5), you can use unpacking:

lst = [*range(2, 36), 50, 100, 200]

If you're using numpy, you can use the r_ index trick (which looks somewhat similar to the matlab version):

>>> import numpy as np
>>> np.r_[2:36, 100, 200, 500]
array([  2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12,  13,  14,
    15,  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,
    28,  29,  30,  31,  32,  33,  34,  35, 100, 200, 500])