高级特性

一、切片css

  L[0:3]、L[:3]、L[3:]、L[-1:]、L[:10:2]、L[::5]python

  tuple也是一种list,惟一区别是tuple不可变。所以,tuple也能够用切片操做,只是操做的结果还是tuple。函数

  字符串'xxx'也能够当作是一种list,每一个元素就是一个字符。所以,字符串也能够用切片操做,只是操做结果还是字符串。spa

二、迭代code

  在Python中,迭代是经过for ... in来完成的。对象

  只要是可迭代对象,不管有无下标,均可以迭代索引

  默认状况下,dict迭代的是key。若是要迭代value,能够用for value in d.values(),若是要同时迭代key和value,能够用for k, v in d.items()字符串

  字符串也可迭代。generator

  判断是否可迭代:经过collections模块的Iterable类型判断。string

    isinstance('abc', Iterable) # str是否可迭代

  enumerate函数能够把一个list变成索引-元素对

三、列表生成式

  [结果计算式 for x in range(a, b) if 条件判断]

  两层循环: [m + n for m in 'ABC' for n in 'XYZ']

        ['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ']

四、生成器(generator)

  一边循环一边计算的机制,节省了大量的空间。

  原理:在for循环的过程当中不断计算出下一个元素,并在适当的条件结束for循环。

五、迭代器

  能够直接做用于for循环的数据类型有如下几种:

    一类是集合数据类型,如listtupledictsetstr等;

    一类是generator,包括生成器和带yield的generator function。

  生成器都是Iterator对象,但listdictstr虽然是Iterable,却不是Iterator。把listdictstrIterable变成Iterator可使用iter()函数