如何创建一个带有增量步长的范围列表?

8

我知道可以创建一个数字范围的列表:

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中是否可能?

incremental_value 为一时,结果将是 [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]。或者您想在每次迭代中将步长增加一? - ForceBru
@ForceBru,你说得对。我想要的是将增量值添加到步骤中,以成为新的步骤值,例如:step = 1+1 =2,新步骤=2,新步骤=3,新步骤=4等。是的,在每次迭代中将步骤增加一。 - Reman
可以根据这里的前两个答案,使用while循环或生成器(生成器可以存储“步骤”的状态,而迭代器则不能)。 - smci
4个回答

11

这是可能的,但不使用range函数实现:

def range_inc(start, stop, step, inc):
    i = start
    while i < stop:
        yield i
        i += step
        step += inc

5
您可以像这样做:
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]

谢谢蝙蝠侠,你给了和ForceBru一样的答案。我只接受了他的答案,因为他早了1分钟 :) 但是我非常欣赏你的回答。 - Reman

5

尽管这个问题已经有了答案,但我发现列表推导式使这变得非常容易。我需要与原帖相同的结果,但是以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

-1

我已经进一步简化了上面的代码。我认为这将解决问题。

List=list(range(1,20))
a=0
print "0"
for i in List:
    a=a+i
    print a

指定 nth 范围,可以得到所有具有特定模式的数字。

1
“永远不要使用字符'l'(小写字母el),'O'(大写字母oh)或'I'(大写字母eye)作为单个字符变量名。在某些字体中,这些字符与数字1和0无法区分。当想使用'l'时,请改用'L'。”(http://legacy.python.org/dev/peps/pep-0008/#names-to-avoid)此外,您的代码未输出列表,正如Reman所需。 - Marcel Cozma
我对编程还比较新。 - Uchiha Itachi
当然,谢谢兄弟。 - Uchiha Itachi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接