[英]Pythonic way to iterate through a range starting at 1
目前,如果我想通過n
迭代1
,我可能會使用以下方法:
for _ in range(1, n+1):
print(_)
有沒有更簡潔的方法來實現這一點而不必參考n + 1
?
奇怪的是,如果我想迭代一個從 1 開始的范圍,這並不罕見,我必須指定兩次增加一:
1
在范圍的開頭。+ 1
在范圍的末尾。從文檔中:
range([start], stop[, step])
start 默認為 0,step 可以是任何你想要的,除了 0 和 stop 是你的上限,它不是迭代次數。 因此,將 n 聲明為您的上限是正確的,並且您不必向其添加 1。
例如
>>> for i in range(1, 7, 1): print(i)
...
1
2
3
4
5
6
>>> for i in range(1, 7, 2): print(i)
...
1
3
5
一個不錯的功能是它也可以反向工作。
>>> for i in range(7, 0, -1): print(i)
...
7
6
5
4
3
2
1
如果您不將它用作索引,而是用於可以具有正值或負值的東西,它仍然會派上用場:
>>> for i in range(2, -3, -1): print(i)
...
2
1
0
-1
-2
>>> for i in range(-2, 3, 1): print(i)
...
-2
-1
0
1
2
range(1, n+1)
不被視為重復,但我可以看到,如果您要將1
更改為另一個數字,這可能會變得很麻煩。
這使用生成器刪除重復:
for _ in (number+1 for number in range(5)):
print(_)
range(1, n+1)
是常用的方法,但如果你不喜歡它,你可以創建你的 function:
def numbers(first_number, last_number, step=1):
return range(first_number, last_number+1, step)
for _ in numbers(1, 5):
print(_)
不是一般的答案,但對於非常小的范圍(例如,最多五個),我發現用文字拼出它們更具可讀性:
for _ in [1,2,3]:
print _
即使它確實從零開始也是如此。
for i in range(n):
print(i+1)
這將 output:
1
2
...
n
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.