python(16): 循环语句while和for(第10章)


               
                像其他绝大多数语言一样,python中的循环语句也是两种while语句和for语句。与c中循环语句的不同有两点:
  • 有一个else从句
    • 不能在while的真值判断表达式中同时进行赋值操作先来看while语句:
    • while :
    •     ...
    • else:
    •     ...上面说的第一点不同是指在中,不能写成比如这样的表达式:"while x =  next", 因为在python中,一个赋值语句并不返回一个值,只是赋值,这与c中不一样。else从句是在while循环结束后执行的,看起来好像是多此一举,因为即使没有else从句,后面的语句也会在while循环结束后执行,其实不然。如果在while的循环体内有break语句,情况就不一样的。因为break语句是用来跳过整个循环,碰到break语句后,else从句中的内容也不会执行。
      for语句:
    • for x in seq:
    •     ...
    • else:
    •     ...
      for语句是一种更加高级的循环语句,其实for语句完全可以用while语句来代替,只不过是比较麻烦而已。在for语句中,有一个隐式的赋值过程,比如上面的语句,x会被依次赋予seq[0] seq[1]...等值。在python中,应该尽量使用for循环,因为for比while运行得比较快。
      与循环搭配使用的除了break外还有continue,与break跳过整个循环语句不同,continue只是表示马上跳回循环体的开头,进行下一次循环。此外,range()、zip()、map()函数也常常与循环语句配合使用。zip()前面介绍过。map()与zip()非常相似,唯一的不同是,map(function, seq1, seq2...),它也返回一个list,是把seq1 seq2...各个成员应用于functions中,以function返回的值作为成员构建一个list,如果function为None,那么就是直接返回seq1和seq2...中值。比如:
      L = [1,2]
      S = [3,4,5]
      map(None, L, S) ==> [(1,3), (2,4), (None,5)]