一般来说,语句依次执行 - 例如,函数中的第一个语句首先执行,然后是第二个语句,依次类推。但是有很多时候需要多次执行同一段代码,这就引入了循环的概念。
编程语言提供了允许更复杂的执行路径的各种控制结构。
循环语句允许多次执行语句或语句组。下图说明了一个循环语句流程结构 -
Python编程语言提供以下类型的循环来处理循环需求。
编号 | 循环 | 描述 |
---|---|---|
1 | while循环 | 在给定条件为TRUE 时,重复一个语句或一组语句。 它在执行循环体之前测试状态。 |
2 | for循环 | 多次执行一系列语句,并缩写管理循环变量的代码。 |
3 | 嵌套循环 | 可以使用一个或多个循环在while 或for 循环中。 |
循环控制语句从正常顺序更改执行。 当执行离开范围时,在该范围内创建的所有自动对象都将被销毁。
Python支持以下控制语句。
编号 | 控制语句 | 描述 |
---|---|---|
1 | break语句 | 终止循环语句并将执行转移到循环之后的语句。 |
2 | continue语句 | 使循环跳过其主体的剩余部分,并立即重新测试其状态以进入下一次迭代。 |
3 | pass语句 | 当语法需要但不需要执行任何命令或代码时,Python中就可以使用pass 语句,此语句什么也不做,用于表示“占位”的代码,有关实现细节后面再写 |
下面简单地看一下循环控制语句。
迭代器(Iterator)是允许程序员遍历集合的所有元素的对象,而不管其具体实现。在Python中,迭代器对象实现了iter()
和next()
两种方法。
String
,List
或Tuple
对象可用于创建Iterator
。
list = [1,2,3,4] it = iter(list) # this builds an iterator object print (next(it)) #prints next available element in iterator # Iterator object can be traversed using regular for statement for x in it: print (x, end=" ") or using next() function while True: try: print (next(it)) except StopIteration: sys.exit() #you have to import sys module for this
发生器(generator
)是使用yield
方法产生或产生一系列值的函数。
当一个生成器函数被调用时,它返回一个生成器对象,而不用执行该函数。 当第一次调用next()
方法时,函数开始执行,直到它达到yield
语句,返回yielded
值。 yield
保持跟踪,即记住最后一次执行,而第二个next()
调用从前一个值继续。
以下示例定义了一个生成器,它为所有斐波纳契数字生成一个迭代器。
#!usr/bin/python3 import sys def fibonacci(n): #generator function a, b, counter = 0, 1, 0 while True: if (counter > n): return yield a a, b = b, a + b counter += 1 f = fibonacci(5) #f is iterator object while True: try: print (next(f), end=" ") except StopIteration: sys.exit()