for 循环
在上一讲中我们学习了 while 语句进行循环控制,接下来我们将要学习另一种循环语句 for 。
基本使用¶
不同编程语言都有 for 语言,比如 C# 语言中的 foreach, Java 语言中的 for,在 Python 中的基本使用方法如下。
sequence
为可迭代的对象,item
为序列中的每个对象。
实例¶
输出的结果为 1,2,3,4,5,6,7,12,543,876,12,3,2,5
, 内容依次为 example_list
中的每一个元素 注意 Python 是使用缩进表示程序的结构,如果程序这样编写,
那么每次循环都会输出 inner of for
,在循环结束后,输出 outer of for
一次。
进阶¶
range使用
在 Python 内置了工厂函数,range
函数将会返回一个序列,总共有三种使用方法
1 range(start, stop)
其中 start
将会是序列的起始值,stop
为结束值,但是不包括该值,类似 数学中的表达 [start, stop)
,左边为闭区间,右边为开区间。
上述表达将会返回 1-9
所有整数,但不包含 10
2 range(stop)
如果省略了 start
那么将从 0 开始,相当于 range(0, stop)
3 range(start, stop, step)
step
代表的为步长,即相隔的两个值得差值。从 start
开始,依次增加 step
的值,直至等于或者大于 stop
将会输出 0, 5, 10
。
高级主题¶
4.1 内置集合
Python 共内置了 list
、 tuple
、dict
和 set
四种基本集合,每个 集合对象都能够迭代。
tuple 类型
程序将以此按行输出 'python', 2.7 和 64。
dictionary 类型
输出的结果为:platform 64,lan python, version 2.7
, 字典在迭代的过程 中将 key
作为可迭代的对象返回。注意字典中 key
是乱序的,也就是说和插入 的顺序是不一致的。如果想要使用顺序一致的字典,请使用 collections
模块 中的 OrderedDict
对象。
set 类型
将会输出 python, python3, python2
set 集合将会去除重复项,注意输出的 结果也不是按照输入的顺序。
4.2 迭代器
Python 中的 for
句法实际上实现了设计模式中的迭代器模式 ,所以我们自己也可以按照迭代器的要求自己生成迭代器对象,以便在 for
语句中使用。 只要类中实现了 __iter__
和 next
函数,那么对象就可以在 for
语句中使用。 现在创建 Fibonacci 迭代器对象,
将会输出前 5 个 Fibonacci 数据 1,1, 2, 3, 5
4.3 生成器
除了使用迭代器以外,Python 使用 yield
关键字也能实现类似迭代的效果,yield
语句每次 执行时,立即返回结果给上层调用者,而当前的状态仍然保留,以便迭代器下一次循环调用。这样做的 好处是在于节约硬件资源,在需要的时候才会执行,并且每次只执行一次。
将会输出前 5 个 Fibonacci 数据 1,1, 2, 3, 5