好吧,给孩子们教蟒蛇。我们刚写了第一个小程序:
b = 0
for a in range (1, 10)
b = b + 1
print a, b
停在9点,他们问“为什么”,我不能说我知道答案。
我的代码总是涉及文件,而我的“行中读取器”并不会缩短一行,所以我实际上不知道。在数学表示法中,这种行为将是[1,10)
。从技术上讲,(1,10)
是2,3,4,5,6,7,8,9
,实际上我想要[1,10]
。
发布于 2013-06-22 18:24:58
这正是python的range
的工作方式。来自文档的报价
这是一个通用的函数,用于创建包含算术进度的列表。它最常用于for循环。参数必须是纯整数。如果省略step参数,则默认为1;如果省略start参数,则默认为0。完整表单返回普通整数开始、开始+步骤、开始+2*步骤、.的列表。如果step为正,则最后一个元素是最大的start +i*步骤小于stop;如果step为负值,则最后一个元素是最小的start +I*步骤大于stop。步骤不能为零(否则引发ValueError )。
发布于 2013-06-22 18:25:22
它通常比其他方法更有用。
range(10)
准确地返回10个项目(如果您想重复10次)range(10)
准确地返回10项列表中的索引range(0, 5) + range(5, 10) == range(0, 10)
,这使得对范围的推理变得更加容易。发布于 2013-06-22 18:25:44
关键是range
被定义为range(start,stop,step=1)
http://docs.python.org/2/library/functions.html#range。最后一个元素总是小于stop
。
在实际中,它是这样定义的,因为len n
列表的索引被编号为0
到n-1
。
一个理论上更令人满意的答案是,它避免了另一种选择,即序列中的最后一个元素将是大于或等于stop
的第一个整数,而后者通常是意外的。这也导致了帕维尔·阿诺索夫列出的美好的财产,所有这些都会被一个大于或平等的规则所破坏。
样式方面的一点:编写没有空格的range (1, 10)
比较常见,因为range
是一个函数,它返回请求范围内的项的列表(或3.x中的生成器)。python中的for
循环总是对数据结构或生成器(通常是iterable
对象)的元素进行顺序迭代。
https://stackoverflow.com/questions/17253920
复制相似问题