[英]what is the cleanest way to loop in a range of numbers in python?
所以可以說
start = 10
end = 30
現在我需要一個循環,從去start
到end
我在想這樣的事情:
for i in [start..end]
print i
但這不太奏效。 有沒有一種干凈的方法可以做到這一點?
for i in range(start, end+1):
print i
將為您提供10到30( 含)之間的輸出。
注意:我在您的end
值上加上+1
的原因是因為range()函數指定了一個半閉區間 。 這意味着包括第一個值,但不 包括最終值。
即
range(5, 10)
會給你一個清單
5, 6, 7, 8, 9
但不包括10。
您還可以為range()和許多其他東西指定步長,請參見documenation 。
最后,如果您使用的是Python 2.x,則也可以使用xrange()代替range()
,盡管在Python 3.x中,您只會具有range()
,這就是我在這里使用它的原因。
如果您對range()
和xrange()
之間的差異感到好奇(盡管它實際上與您的問題並不直接相關),那么以下兩個SO問題是一個不錯的起點: Python中range和xrange函數之間的區別是什么? 2.X? 並且您是否應該始終偏愛xrange()而不是range()?
for i in xrange(start, end + 1):
print i
如果您使用的是Python 3(而不是Python 2.x),請使用xrange
的range
(如@Levon所建議的)。
for i in xrange(10, 31):
# something
看一下好手冊,它會為您解釋...請注意,終點是“最多,但不包括”-稱為半封閉范圍。
也正如其他人在Python 3.x中提到的那樣-range range()
是一個生成器,並且不會像Python 2.x中那樣創建list
。 但是,2to3工具將自動將xrange
轉換為range
語句。
在2.x range
生成了可以切片的物理列表等。但是在3.x中,如果要使其實現在2.x中所做的工作,則必須編寫list(range(1000))
。
您正在尋找range()
range(start,end) #end not inclusive
range(end) # starts with 0,end not inclusive
range(start, end, step) #increments of step, default = 1
例如,
for i in range(100,150):
print i
注意: Py3k +僅具有range(),先前的版本具有xrange()
和range()
,除了xrange()
是一個生成器外,它們都相似,而range()
創建一個可以迭代的數字列表。
您可以迭代並打印列表中的每個元素。 請嘗試以下操作:
for i in range(start,end+1):
print i
您還可以通過打印從range返回的結果列表來打印全范圍的數字:
print(range(start, end+1))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.