在Python中,带有`range`的for循环如何工作?

Top*_*hef 28 python

for number in range(1,101): 
    print number
Run Code Online (Sandbox Code Playgroud)

有人可以向我解释为什么上面的代码打印1-100?我知道范围函数排除了指定范围内的最后一个数字,但是,语法的"数字"部分是什么?

我更习惯于C++和Java,我写代码如下:

for (i = 1; i < 101; i++) {
   System.out.println(i);
   i++;
}
Run Code Online (Sandbox Code Playgroud)

究竟是什么'数字'?我确定我对这个看起来太过分了,有一个简单的问题.

Joã*_*lva 27

number等价i于你的C循环中,即它是一个保存每个循环迭代值的变量.

将Python代码简单地转换为C将导致以下内容:

for (int number = 1; number < 101; number++) {
  printf("%d\n", number);
}
Run Code Online (Sandbox Code Playgroud)

  • range()返回一个序列(一个行为类似于数字列表的抽象),'for number in ...'被称为'迭代序列'.与C版本中的序列没有确切的类比,但是范围序列的元素之间的关系是"增量"发生的位置. (3认同)

nev*_*219 10

Python 2.7文档说明:

范围([开始],停止[,步骤])

这是一个用于创建包含算术进度的列表的通用函数.它最常用于for循环.参数必须是普通整数.如果省略step参数,则默认为1.如果省略start参数,则默认为0.完整表单返回普通整数列表[start,start + step,start + 2*step,...] .如果step为正,则最后一个元素是最大的start + i*step小于stop; 如果step为负数,则最后一个元素是最小的start + i*step大于stop.step不能为零(否则引发ValueError)

编辑:您可能还想看看xrange.编辑:基本上:

for ( start ; stop ; step )
range( start, stop, step ) // where start and step are optional
Run Code Online (Sandbox Code Playgroud)