我知道可以创建一个数字范围的列表:
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]
但我想做的是在每次迭代中递增步长:
list(range(0,20,1+incremental value)
例如,当增量为+1时
expected output: [0, 1, 3, 6, 10, 15]
这在Python中是否可能?
我知道可以创建一个数字范围的列表:
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]
list(range(0,20,1+incremental value)
例如,当增量为+1时
expected output: [0, 1, 3, 6, 10, 15]
这是可能的,但不使用range
函数实现:
def range_inc(start, stop, step, inc):
i = start
while i < stop:
yield i
i += step
step += inc
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]
尽管这个问题已经有了答案,但我发现列表推导式使这变得非常容易。我需要与原帖相同的结果,但是以24为增量,从-7开始到7结束。
lc = [n*24 for n in range(-7, 8)]
list(range(-168, 169, 24))
,但这不是我要求的。我要求的是递增增量。[0, 1, 3, 6, 10, 15]
+1,+2,+3,+4,+5,+ ....
- Reman我已经进一步简化了上面的代码。我认为这将解决问题。
List=list(range(1,20))
a=0
print "0"
for i in List:
a=a+i
print a
nth
范围,可以得到所有具有特定模式的数字。
incremental_value
为一时,结果将是[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
。或者您想在每次迭代中将步长增加一? - ForceBruwhile
循环或生成器(生成器可以存储“步骤”的状态,而迭代器则不能)。 - smci