Home » Python » Python – Create list with numbers between 2 values?

# Python – Create list with numbers between 2 values?

Questions:

How would I create a list with values between 2 values I put in?
For example, following list is generated for values between 11 and 16:

``````list = [11, 12, 13, 14, 15, 16]
``````

Use `range`. In Python 2.x it returns a list so all you need is,

``````>>> range(11, 17)
[11, 12, 13, 14, 15, 16]
``````

In Python 3.x it’s a iterator so you need to convert it to a list,

``````>>> list(range(11, 17))
[11, 12, 13, 14, 15, 16]
``````

Note: Second number is exclusive so here it needs to be `16+1` = `17`

EDIT:

To response to the question about incrementing by `0.5` the easiest option would probably be to use `numpy`‘s `arange`,

``````>>> numpy.arange(11, 17, 0.5)
array([ 11. ,  11.5,  12. ,  12.5,  13. ,  13.5,  14. ,  14.5,  15. ,
15.5,  16. ,  16.5])
``````

Questions:

You seem to be looking for `range()`:

``````>>> x1=11
>>> x2=16
>>> range(x1, x2+1)
[11, 12, 13, 14, 15, 16]
>>> list1 = range(x1, x2+1)
>>> list1
[11, 12, 13, 14, 15, 16]
``````

For incrementing by `0.5` instead of `1`, say:

``````>>> list2 = [x*0.5 for x in range(2*x1, 2*x2+1)]
>>> list2
[11.0, 11.5, 12.0, 12.5, 13.0, 13.5, 14.0, 14.5, 15.0, 15.5, 16.0]
``````

Questions:

Try:

``````range(x1,x2+1)
``````

That is a list in Python 2.x and behaves mostly like a list in Python 3.x. If you are running Python 3 and need a list that you can modify, then use:

``````list(range(x1,x2+1))
``````

Questions:

Use list comprehension in python. Since you want 16 in the list too.. Use x2+1. Range function excludes the higher limit in the function.

list=[x for x in range(x1,x2+1)]

Questions:

If you are looking for range like function which works for float type, then here is a very good article.

``````def frange(start, stop, step=1.0):
''' "range()" like function which accept float type'''
i = start
while i < stop:
yield i
i += step
# Generate one element at a time.
# Preferred when you don't need all generated elements at the same time.
# This will save memory.
for i in frange(1.0, 2.0, 0.5):
print i   # Use generated element.
# Generate all elements at once.
# Preferred when generated list ought to be small.
print list(frange(1.0, 10.0, 0.5))
``````

Output:

``````1.0
1.5
[1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0, 5.5, 6.0, 6.5, 7.0, 7.5, 8.0, 8.5, 9.0, 9.5]
``````

Questions:
``````range(x,y+1)