I know that it is possible to create a list of a range of numbers:
list(range(0,20,1))
output: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
but what I want to do is to increment the step on each iteration:
list(range(0,20,1+incremental value)
p.e. when incremental = +1
expected output: [0, 1, 3, 6, 10, 15]
Is this possible in python?
Python integers are not mutable, but lists are. In the first case el references immutable integers, so += creates a new integer that only el refers to. In the second case the list a is mutated directly, modifying its elements directly.
This is possible, but not with range
:
def range_inc(start, stop, step, inc):
i = start
while i < stop:
yield i
i += step
step += inc
You can do something like this:
def incremental_range(start, stop, step, inc):
value = start
while value < stop:
yield value
value += step
step += inc
list(incremental_range(0, 20, 1, 1))
[0, 1, 3, 6, 10, 15]
Even though this has already been answered, I found that list comprehension made this super easy. I needed the same result as the OP, but in increments of 24, starting at -7 and going to 7.
lc = [n*24 for n in range(-7, 8)]
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With