首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么巨蟒的范围“停短”?

为什么巨蟒的范围“停短”?
EN

Stack Overflow用户
提问于 2013-06-22 18:19:26
回答 3查看 2.1K关注 0票数 3

好吧,给孩子们教蟒蛇。我们刚写了第一个小程序:

代码语言:javascript
运行
复制
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]

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-06-22 18:24:58

这正是python的range的工作方式。来自文档的报价

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

票数 3
EN

Stack Overflow用户

发布于 2013-06-22 18:25:22

它通常比其他方法更有用。

  • range(10)准确地返回10个项目(如果您想重复10次)
  • range(10)准确地返回10项列表中的索引
  • range(0, 5) + range(5, 10) == range(0, 10),这使得对范围的推理变得更加容易。
票数 7
EN

Stack Overflow用户

发布于 2013-06-22 18:25:44

关键是range被定义为range(start,stop,step=1) http://docs.python.org/2/library/functions.html#range。最后一个元素总是小于stop

在实际中,它是这样定义的,因为len n列表的索引被编号为0n-1

一个理论上更令人满意的答案是,它避免了另一种选择,即序列中的最后一个元素将是大于或等于stop的第一个整数,而后者通常是意外的。这也导致了帕维尔·阿诺索夫列出的美好的财产,所有这些都会被一个大于或平等的规则所破坏。

样式方面的一点:编写没有空格的range (1, 10)比较常见,因为range是一个函数,它返回请求范围内的项的列表(或3.x中的生成器)。python中的for循环总是对数据结构或生成器(通常是iterable对象)的元素进行顺序迭代。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17253920

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档