开发学院

您的位置:首页>教程>正文

教程正文

Python 3 循环

Python 3 循环

  一般来说,语句是按顺序执行的:首先执行函数中的第一行代码,然后执行第二行代码,依此类推。可能会出现这种情况,您需要多次执行同一代码块,那么你就需要用到循环语句。

  编程语言提供了各种控制结构,允许更复杂的执行路径。

  循环语句允许我们多次执行一个语句或一组语句。下图说明了一个循环语句:

loop_architecture.jpg

  Python 3提供了以下类型的循环来处理循环需求。

  • while循环:当指定条件为TRUE时,重复执行语句或语句组。它在执行循环体之前测试条件。

  • for循环:多次执行语句序列,并缩写管理循环变量的代码。

  • 嵌套循环:你可以在while 或者 for循环内使用另外的循环语句

循环控制语句

  循环控制语句改变了正常顺序的执行。当执行离开范围时,在该范围内创建的所有自动对象都将被销毁。

  Python支持以下控制语句。

  • break:终止循环语句,并将执行转移到紧接在循环之后的语句。

  • continue:导致循环跳过其主体的其余部分,并在重复之前立即重新测试其状况。

  • pass :使用pass语句时,需要在一份声明中使用,但又不希望执行任何命令或代码

迭代器和生成器

  迭代器是一个对象,它允许程序员遍历集合的所有元素,而不管它的具体实现。在Python中,迭代器对象实现两种方法: iter()和next()。

  字符串、列表或元组对象都可用于创建迭代器。

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
!usr/bin/python3
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

 生成器是一个使用yield方法产生一个或一系列值的函数。

  调用生成器函数时,它会返回生成器对象,甚至不会开始执行该函数。当第一次调用next() 方法时,函数开始执行,直到它到达yield语句,返回yield值。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()