Python 3 turn range to a list
You can just construct a list from the range object:
my_list = list(range(1, 1001))
This is how you do it with generators in python2.x as well. Typically speaking, you probably don't need a list though since you can come by the value of my_list[i]
more efficiently (i + 1
), and if you just need to iterate over it, you can just fall back on range
.
Also note that on python2.x, xrange
is still indexable1. This means that range
on python3.x also has the same property2
1print xrange(30)[12]
works for python2.x
2The analogous statement to 1 in python3.x is print(range(30)[12])
and that works also.
In Pythons <= 3.4 you can, as others suggested, use list(range(10))
in order to make a list out of a range (In general, any iterable).
Another alternative, introduced in Python 3.5
with its unpacking generalizations, is by using *
in a list literal []
:
>>> r = range(10)>>> l = [*r]>>> print(l)[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Though this is equivalent to list(r)
, it's literal syntax and the fact that no function call is involved does let it execute faster. It's also less characters, if you need to code golf :-)
in Python 3.x, the range()
function got its own type. so in this case you must use iterator
list(range(1000))