【问题标题】:How to create a list of a range with incremental step?如何使用增量步骤创建范围列表?
【发布时间】:2017-04-04 00:19:41
【问题描述】:

我知道可以创建一系列数字的列表:

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)

p.e.当增量 = +1

expected output: [0, 1, 3, 6, 10, 15]  

这在 python 中可能吗?

【问题讨论】:

  • incremental_value 为1 时,结果将为[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]。或者您想每次迭代将步长递增吗?
  • @ForceBru,你的权利。我想要的是将增量值添加到步骤中以成为新的步骤值 p.e。 step = 1+1 =2, new step =2, new step = 3, new step = 4 等等。是的,每次迭代都会增加一个步骤。
  • 根据这里的前两个答案,使用while 循环或生成器(生成器可以存储step 的状态,而迭代器不能)。

标签: python python-3.x range increment


【解决方案1】:

尽管已经回答了这个问题,但我发现列表理解让这变得超级简单。我需要与 OP 相同的结果,但以 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,+ ....
【解决方案2】:

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

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

指定nth 范围,为您提供具有特定模式的所有数字。

【讨论】:

  • 在哪里使用 b 以及为什么使用 "l" ? “切勿使用字符 'l'(小写字母 el)、'O'(大写字母 oh)或 'I'(大写字母眼睛)作为单个字符变量名称。在某些字体中,这些字符与数字 one 无法区分和零。当想使用'l'时,请改用'L'。 (legacy.python.org/dev/peps/pep-0008/#names-to-avoid) 此外,您的代码不会像 Reman 想要的那样输出列表
  • 我对这些编程有点陌生。
  • 好的,谢谢兄弟
【解决方案3】:

这是可能的,但不适用于range

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

【讨论】:

    【解决方案4】:

    你可以这样做:

    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 分钟:) 但是我非常感谢你的回答。
    猜你喜欢
    • 2012-11-05
    • 1970-01-01
    • 2010-11-27
    • 2010-11-01
    • 1970-01-01
    • 2021-10-20
    • 1970-01-01
    • 2015-03-09
    • 1970-01-01
    相关资源
    最近更新 更多