美文网首页
2018-01-03(第四章)

2018-01-03(第四章)

作者: papaha | 来源:发表于2018-01-03 16:43 被阅读0次

第四章      高级特性

1、切片

(1)对这种经常取指定索引范围的操作,用循环十分繁琐,因此,Python提供了切片(Slice)操作符,能大大简化这种操作。

>>> L = list(range(100))

>>>L[:10]     #取前10个

>>>L[-10:]     #取后10个

>>>L[10:20]    #取11到20个

>>>L[:10:2]        #前10个数,每2个取一个

>>>L[::5]          #所有数,每5个取一个

(2)tuple也是一种list,唯一区别是tuple不可变。因此,tuple也可以用切片操作,只是操作的结果仍是tuple。

(3)字符串'xxx'也可以看成是一种list,每个元素就是一个字符。因此,字符串也可以用切片操作,只是操作结果仍是字符串。

2、迭代

如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们称为迭代(Iteration)。

(1)dict的存储不是按照list的方式顺序排列,所以,迭代出的结果顺序很可能不一样。

(2)如何判断一个对象是可迭代对象呢?方法是通过collections模块的Iterable类型判断。

3、列表生成式

通过列表生成式,我们可以直接创建一个列表。

(1)>>> [x * x for x in range(1,11)]

(2)>>> [x * x for x in range(1,11)  if x % 2 == 0]

(3)>>> [m + n for m in 'ABC'  for n in 'XYZ' ]

4、生成器

在Python中,这种一边循环一边计算的机制,称为生成器:generator。

(1)方法一:只要把一个列表生成式的[]改成(),就创建了一个generator。

>>> g = (x * xforxinrange(10))

generator保存的是算法,每次调用next(g),就计算出g的下一个元素的值

(2)方法二:

如果一个函数定义中包含yield关键字,那么这个函数就不再是一个普通函数,而是一个generator。

5、迭代器

(1)可迭代对象Iterable,可以直接作用于for循环的对象。一类是集合数据类型,如list、tuple、dict、set、str等;一类是generator,包括生成器和带yield的generator function。

可以使用isinstance()判断一个对象是否是Iterable对象。

(2)迭代器:Iterator,不但可以作用于for循环,还可以被next()函数不断调用并返回下一个值,直到最后抛出StopIteration错误表示无法继续返回下一个值了。如生成器。

相关文章

网友评论

      本文标题:2018-01-03(第四章)

      本文链接:https://www.haomeiwen.com/subject/nsphnxtx.html