Pythonic方式迭代从1开始的范围

时间:2015-10-22 13:40:16

标签: python loops

目前,如果我想通过 1 重复 n ,我可能会使用以下方法:

for _ in range(1, n+1):
    print(_)

有没有更简洁的方法来完成此操作而无需参考 n + 1

如果我想迭代通常从1开始的范围(这并不罕见),我必须将增加指定两次,这似乎很奇怪:

  1. 1位于范围的开头。
  2. + 1位于范围的末尾。

5 个答案:

答案 0 :(得分:2)

range(1, n+1)不被视为重复,但我可以看到,如果您要将1更改为其他数字,这可能会变得很麻烦。

这将使用生成器删除重复:

for _ in (number+1 for number in range(5)):
    print(_)

答案 1 :(得分:2)

不是一般答案,但对于非常小范围(例如,最多五个),我发现在字面拼写它们更具可读性:

for _ in [1,2,3]:
    print _

即使它从零开始也是如此。

答案 2 :(得分:1)

range(1, n+1)是常见的方法,但如果你不喜欢它,你可以创建你的功能:

def numbers(first_number, last_number, step=1):
    return range(first_number, last_number+1, step)

for _ in numbers(1, 5):
    print(_)

答案 3 :(得分:1)

来自文档:

range([start], stop[, step])

开始默认为0,步骤可以是任何你想要的,除了0和stop是你的上限,它不是迭代次数。所以声明n是你的上限是正确的,你不必添加1。

答案 4 :(得分:0)

for i in range(n):
    print(i+1)

这将输出:

1 
2
...
n