一.迭代器
1.概念
迭代器指的是迭代取值的工具,迭代是一个重复的过程,每次重复都是基于上一次的结果而继续,单纯的重复不是迭代
2.特征
不依赖索引,通过next指针迭代所有数据,一次只取一个,可以大大节省空间,迭代无限量的数据
3.可迭代对象
如果成员中含有__iter__这个方法,就是可迭代对象
dir函数可以用来查看一个对象中的所有成员
4.如何定义一个迭代器
1)iter(可迭代对象)
2)可迭代对象.__iter__()
5.如何判断一个迭代器
1)如果内置成员中含有__iter__和__next__两个方法,就可以判断是一个迭代器
2)使用Iterator和Iterable来判断是否是迭代器
from collections import Iterator , Iterable
6.如何调用一个迭代器
1)next(迭代器)
2)迭代器.__next__()
迭代器通过next方法调用时,是单向不可逆的过程
3)通过for循环,遍历迭代器
4)for和next配合调用迭代器
注意:
(1)for循环遍历数据的底层实现就是利用了迭代器,通过next方法进行调用,从而获取数据
(2)可迭代对象和迭代器之间的关系:从不可被直接获取 => 可被直接获取的过程
(3)是一个可迭代对象,不一定是一个迭代器
是一个迭代器,一定是一个可迭代对象
二.高阶函数 :能够把函数当成参数传递的就是高阶函数
1.map函数
map(func,iterable)
功能:
把iterable里面的数据一个一个拿出来,放到func函数中进行处理,把处理的结果扔到迭代器中,返回迭代器
参数:
func 内置或自定义函数
iterable 具有可迭代性的数据 (迭代器,容器类型的数据,range对象)
返回值: 迭代器
2.filter函数
filter(func,iterable)
功能:
在自定义的函数中过滤数据
如果返回True, 代表保留数据
如果返回False,代表舍弃该数据
参数:
func : 自定义函数
iterable : 具有可迭代性的数据(迭代器,容器类型数据,可迭代对象)
返回值:
返回处理后的迭代器
3.reduce函数
reduce(func,iterable)
功能:一次性从iterable当中拿出两个值,扔到func函数中进行处理
把运算的结果和iterable的第三个值接续扔到func中做运算...以此类推最后返回计算结果
参数:
func 自定义函数
iterable 可迭代性数据(容器类型数据,range对象,迭代器)
返回值: 最后计算的结果
4.sorted函数
sorted(iterable,reverse=False,key=函数)
功能:排序
参数:
iterable 可迭代性数据(容器类型数据,range对象,迭代器)
reverse 代表是否倒序,reverse=True代表倒序从大到小,reverse=True,代表正序,从小到大
key 自定义函数或内置函数
返回值:
排序后的列表
sort 基于原有的列表进行排序,只限定列表类型
sorted 所有的容器类型数据都能排序,返回一个全新的列表(推荐)