专业编程基础技术教程

网站首页 > 基础教程 正文

Python的for语句与C或Pascal的区别

ccvgpt 2024-12-13 12:09:51 基础教程 3 ℃

Python 的 for 语句与 C 或 Pascal 中的不同。Python 的 for 语句不迭代算术递增数值(如 Pascal),或是给予用户定义迭代步骤和暂停条件的能力(如 C),而是迭代列表或字符串等任意序列,元素的迭代顺序与在序列中出现的顺序一致。 例如:

遍历集合时修改集合的内容,会很容易生成错误的结果。因此不能直接进行循环,而是应遍历该集合的副本或创建新的集合:

Python的for语句与C或Pascal的区别

那用什么来遍历数字序列呢?内置函数 range() 常用于遍历数字序列,该函数可以生成算术级数:

生成的序列不包含给定的终止数值;range(10) 生成 10 个值,这是一个长度为 10 的序列,其中的元素索引都是合法的。range 可以不从 0 开始,还可以按指定幅度递增(递增幅度称为 '步进',支持负数):

range() 和 len() 组合在一起,可以按索引迭代序列:

不过,大多数情况下,enumerate() 函数更便捷。

但是,如果只输出 range,会出现意想不到的结果:

range() 返回对象的操作和列表很像,但其实这两种对象不是一回事。迭代时,该对象基于所需序列返回连续项,并没有生成真正的列表,从而节省了空间。

这种对象称为可迭代对象 iterable,函数或程序结构可通过该对象获取连续项,直到所有元素全部迭代完毕。for 语句就是这样的架构,sum() 是一种把可迭代对象作为参数的函数:

当然,讲到for循环,怎么会少了break,continue语句及else子句呢

break 语句和 C 中的类似,用于跳出最近的 for 或 while 循环。

循环语句支持 else 子句;for 循环中,可迭代对象中的元素全部循环完毕,或 while 循环的条件为假时,执行该子句;break 语句终止循环时,不执行该子句。 请看下面这个查找素数的循环示例:

(没错,这段代码就是这么写。仔细看:else 子句属于 for 循环,不属于 if 语句。)

与 if 语句相比,循环的 else 子句更像 try 的 else 子句: try 的 else 子句在未触发异常时执行,循环的 else 子句则在未运行 break 时执行。try 语句和异常详见 异常的处理。

continue 语句也借鉴自 C 语言,表示继续执行循环的下一次迭代:

Tags:

最近发表
标签列表