簡體   English   中英

在python中循環一系列數字的最干凈方法是什么?

[英]what is the cleanest way to loop in a range of numbers in python?

所以可以說

start = 10
end = 30

現在我需要一個循環,從去startend

我在想這樣的事情:

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),請使用xrangerange (如@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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM