在python中循环一系列数字的最简洁方法是什么?

时间:2012-07-12 03:43:50

标签: python

所以我们说

start = 10
end = 30

现在我需要一个从startend

的循环

我在考虑这样的事情:

for i in [start..end]
  print i

但这不太有用。有干净的方法吗?

6 个答案:

答案 0 :(得分:7)

for i in range(start, end+1):
   print i

将为您提供从10到包含 30的输出。

注意:我将+1添加到end值的原因是因为range()函数指定了半闭区间。这意味着第一个值是包含,但结束值是不是

即,

  range(5, 10)

会给你一个

列表
  5, 6, 7, 8, 9

包括10。

您还可以指定range()以及其他一些内容的步长,请参阅documenation

最后,如果您使用的是Python 2.x,您也可以使用xrange()代替range(),但在Python 3.x中,您将只有range()这就是为什么我在这里使用它。

如果您对range()xrange()之间的差异感到好奇(虽然它与您的问题没有直接关系),以下两个SO问题是一个很好的起点:{{3} }和What is the difference between range and xrange functions in Python 2.X?

答案 1 :(得分:2)

for i in xrange(start, end + 1):
    print i

如果你使用的是Python 3,那么在range中使用xrange(如@Levon建议的那样),而不是Python 2.x.

答案 2 :(得分:2)

for i in xrange(10, 31):
   # something

看一下精美的手册,它会为你解释...注意结束点是“最多但不包括” - 它被称为半闭范围。

正如其他人在Python 3.x中提到的那样 - range()是一个生成器,并且不像Python 2.x那样创建list。但是,2to3工具会自动将xrange转换为range语句。

在2.x range中生成了一个可以切片的物理列表等......但是在3.x中,如果你想要它实现2中的功能,你必须写list(range(1000))。 X

答案 3 :(得分:1)

您正在寻找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()是生成器,而{{{ 1}}创建一个可以迭代的数字列表。

答案 4 :(得分:1)

您可以迭代并打印列表的每个元素。请尝试以下方法:

for i in range(start,end+1):
print i

答案 5 :(得分:1)

您还可以打印从范围:

返回的结果列表来打印全部数字
print(range(start, end+1))