python高级特性

1、切片
对于经常取指定索引范围的操作,Python提供了切片(Slice)操作符
字符串’xxx’也可以看成是一种list,每个元素是一个字符
**小栗子:**利用切片操作,实现一个trim()函数,去除字符串首尾的空格
python高级特性_第1张图片
在这里插入图片描述
2、迭代:
1)通过for…in…来遍历list或tuple,称为迭代
2)dict迭代的是key,如果要迭代value,可以用for value in d.values(),如果要同时迭代key和value,可以用for k, v in d.items()
3)字符串也可迭代
for ch in ‘ABC’:
print(ch)
4)Python内置的enumerate函数可以把一个list变成索引-元素对,可以在for循环中同时迭代索引和元素本身:
python高级特性_第2张图片
使用迭代查找一个list中最小和最大值,并返回一个tuple:
python高级特性_第3张图片

3、列表生成式:
用来创建list的生成式,把要生成的元素x * x放到前面,后面跟for循环,for循环后还可以加上判断
eg:在这里插入图片描述
使用两层循环,可以生成全排列
在这里插入图片描述
列出当前目录下的所有文件和目录名:
python高级特性_第4张图片
for循环可以同时使用两个及以上变量,比如dict的items()可以同时迭代key和value
python高级特性_第5张图片
使用两个变量来生成list
在这里插入图片描述
把一个list中所有的字符串变成小写:
python高级特性_第6张图片
4、生成器:
在循环过程中不断推算后续元素,不必创建完整的list,一边循环一边计算的机制,称为生成器generator。
1)只要把一个列表生成式的[]改成(),就创建了一个generator,generator保存的是算法,每次调用next(g),就计算出g的下一个元素的值,直到计算到最后一个元素,使用for循环迭代,
python高级特性_第7张图片
2)一个函数定义中包含yield关键字,那么这个函数就不再是一个普通函数,而是一个generator,generator函数在每次调用next()的时候执行,遇到yield语句返回,再次执行时从上次返回的yield语句处继续执行
普通函数调用直接返回结果,generator函数的“调用”实际返回一个generator对象
小栗子:
杨辉三角把每一行看做一个list,试写一个generator,不断输出下一行的list
python高级特性_第8张图片
python高级特性_第9张图片
5、迭代器:
可以直接作用于for循环的数据类型有:
1)集合数据类型,如list、tuple、dict、set、str等;
2)generator,包括生成器和带yield的generator function
这些可以直接作用于for循环的对象统称为可迭代对象:Iterable,可以使用isinstance()判断一个对象是否是Iterable对象
生成器可以被next()函数不断调用并返回下一个值,直到抛出StopIteration错误表示无法继续返回,可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator,可以使用isinstance()判断一个对象是否是Iterator对象
生成器都是Iterator对象,但list、dict、str虽然是Iterable,却不是Iterator。
把list、dict、str等Iterable变成Iterator可以使用iter()函数
小结:凡是可作用于for循环的对象都是Iterable类型;
凡是可作用于next()函数的对象都是Iterator类型,它们表示一个惰性计算的序列;
集合数据类型如list、dict、str等是Iterable但不是Iterator,不过可以通过iter()函数获得一个Iterator对象。

你可能感兴趣的:(python学习笔记)