所以让我们说
start = 10
end = 30
现在我需要一个从start到的循环end
我在想这样的事情:
for i in [start..end]
  print i
但这并不完全奏效。有没有一种干净的方法可以做到这一点?
所以让我们说
start = 10
end = 30
现在我需要一个从start到的循环end
我在想这样的事情:
for i in [start..end]
  print i
但这并不完全奏效。有没有一种干净的方法可以做到这一点?
for i in range(start, end+1):
   print i
将为您提供从 10 到 30 的输出。
注意:我添加+1到您的end值的原因是因为range()函数指定了一个半闭区间。这意味着包含第一个值,但不包含最终值。
IE,
  range(5, 10)
会给你一份清单
  5, 6, 7, 8, 9
但不包括 10。
您还可以为range()和许多其他内容指定步长,请参阅文档。
最后,如果您使用的是 Python 2.x,您也可以使用xrange()代替range(),尽管在 Python 3.x 中您只会拥有range()这就是我在这里使用它的原因。
range()如果您对and之间的区别感到好奇xrange()(尽管它与您的问题并不直接相关),那么以下两个 SO 问题是一个很好的起点:Python 2.X 中 range 和 xrange 函数之间的区别是什么?并且您是否应该始终偏爱 xrange() 而不是 range()?
for i in xrange(start, end + 1):
    print i
如果您使用的是 Python 3,而不是 Python 2.x,请使用rangein代替(如@Levon 建议的那样)。xrange
for i in xrange(10, 31):
   # something
看看精美的手册,它会为您解释...注意终点是“最多,但不包括” - 它被称为半封闭范围。
也正如其他人在 Python 3.x 中提到的那样 -range()是一个生成器,不会list像在 Python 2.x中那样创建一个。但是,2to3 工具会自动将 an 转换xrange为range语句。
在 2.xrange中生成了一个可以切片等的物理列表...但是在 3.x 中,list(range(1000))如果您希望它实现它在 2.x 中所做的事情,则必须编写。
您正在寻找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))