高级特性(20160811).md


  1. 切片
    1. Python提高切片操作符
  2. 迭代
    1. 在给定list或tuple,我们可以通过for循环来遍历。
    2. Python的for循环抽象程度高于Java。
    3. 如何判断一个对象是可迭代对象呢?方法是通过collections模块的Iterable类型判断

python
>from collections import Iterable
>isinstance('abc', Iterable)
>

  • 列表生成式
    1. 列表生成式可以用更短的代码达到循环的效果。
    2. 写列表生成式时,把要生成的元素x * x放到前面,后面跟for循环,就可以把list创建出来
    3. for循环后面还可以加上if判断,这样我们就可以筛选出仅偶数的平方:
      python
      >[x*x for x in range(1,11) if x%2 == 0]
      >[4,16, 36, 64, 100]
      >
    4. 还可以使用两层循环
      python
      >[m+n for m in 'ABC' for n in 'XYZ']
      >['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ']
      >
  • 生成器
    1. 如果列表元素可以按照某种算法推算出来,从而节省大量的空间。这种一边循环一边计算的机制,称为生成器:generator。
    2. 创建Lg的区别仅在于最外层的[]()L是一个list,而g是一个generator。
    3. 打印生成器函数可以使用next(),获取下一个返回值。
    4. generator保存的是算法,每次调用next(),就计算下一个元素的值,可使用for循环
    5. 如果一个函数定义中包含yield关键字,那么这个函数就不再是一个普通函数,而是一个generator
  • 小结
    1. 凡是可作用于for循环的对象都是Iterable类型;
    1. 凡是可作用于next()函数的对象都是Iterator类型,它们表示一个惰性计算的序列;
    1. 集合数据类型如listdictstr等是Iterable但不是Iterator,不过可以通过iter()函数获得一个Iterator对象。

    發表評論
    所有評論
    還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
    相關文章