Python核心编程读笔 7: 条件和循环

第八章 条件和循环

一、if

python中的条件表达式:很奇葩!!!

      smaller = (x < y and [x] or [y])[0]

    或者:

      smaller = x if x < y else y

二、while

三、for

1 通过序列项迭代:

  for eachName in nameList:
2 通过索引迭代:

  >>>for nameIndex in range(len(nameList)):
  ... print "Liu,", nameList[nameIndex]
3 使用序列项和索引迭代:

  >>> for i, eachLee in enumerate(nameList):
  ... print "%d %s Lee" % (i+1, eachLee)

四、break和continue

五、pass

Python 没有使用传统的大括号来标记代码块, 而有时有些地方在语法上要求要有代码, 而 Python 中没有对应的空大括号或是分号( ; ) 来表示 C 语言中的"不做任何事" , 若你在需要子语句块的地方不写任何语句, 解释器会提示你语法错误. 因此, Python 提供了 pass 语句, 它不做任何事情 - 即 NOP , ( No OPeration , 无操作)

六、Iterators迭代器

使用迭代器:

  序列

    for i in seq:
      do_something_to(i)

    实际上是这样工作的:
    fetch = iter(seq)
    while True:
      try:
        i = fetch.next()
      except StopIteration:
        break
      do_something_to(i)
  
  字典

    字典的迭代器会遍历它的键(keys). 语句 for eachKey in myDict.keys()可缩写为 for eachKey in myDict;

    另外, Python 还引进了三个新的内建字典方法来定义迭代: myDict.iterkeys() (通过 keys 迭代), myDict.itervalues() (通过values迭代), 以及 myDicit.iteritems() (通过key/value 对来迭代).

  文件:

    文件对象生成的迭代器会自动调用readline()方法. 这样, 循环就可以访问文本文件的所有行。程序员可以使用更简单的 for eachLine in myFile 替换 for eachLine in myFile.readlines() :

七、列表解析

Python 2.0 中我们加入了列表解析, 使语言有了一次革命化的发展,提供给用户了一个强大的工具, 只用一行代码就可以创建包含特定内容的列表!!!

基本语法:

  [expr for iter_var in iterable]

  [expr for iter_var in iterable if cond_expr]

实际举例:

  >>> [x ** 2 for x in range(6)]
  [0, 1, 4, 9, 16, 25]

  >>> [x for x in seq if x % 2]
  [11, 9, 9, 9, 23, 9, 7, 11]

  >>> [(x+1,y+1) for x in range(3) for y in range(5)]
  [(1, 1), (1, 2), (1, 3), (1, 4), (1, 5), (2, 1), (2, 2), (2,
  3), (2, 4), (2, 5), (3, 1), (3, 2), (3, 3), (3, 4), (3, 5)]

八、生成器表达式

生成器表达式是列表解析的一个扩展

基本语法:

  (expr for iter_var in iterable if cond_expr)

实际举例:

  >>>x_product_pairs = ((i, j) for i in rows for j in cols())
  >>>type(x_product_pairs)

  <type 'generator'>

  >>>for i in x_product_pairs:

  ...  print i

  ...

  (0,0)

  (0,1)

  ...

原文地址:https://www.cnblogs.com/hansonwang99/p/4963430.html