迭代器
可迭代对象
定义: 具有__iter__函数的对象,可以返回迭代器对象。
语法: class 可迭代对象名称:
def __iter__(self):
return 迭代器
使用: for 变量名 新可迭代对象:
语句
原理: 迭代器 = 可迭代对象.__iter__()
while True:
try:
print(迭代器.__next__())
except Exeception as e:
break
迭代器对象
定义: 可以被next()函数调用并返回下一个值的对象
语法: class 迭代器类名:
def __init__(self, 聚合对象):
self.聚合对象=聚合对象
def __next__(self):
if 没有元素:
raise StipIteration
return 聚合对象元素
说明: 聚合对象通常是容器对象
作用: 使用者只需通过一种方式,便可简洁明了的获取聚合对象,而又无需了解其内部结构。
generator
1.定义:能够动态(循环一次计算一次返回一次)提供数据的可迭代对象。
2. 作用:再循环过程中,按照某种算法推算数据,不必创建容器存储完整的结果,从而节省内存空间,数据量越大,优势越明显。
3. 以上操作也被称为延迟操作或惰性操作。通俗的讲就是在需要的时候才计算结果,而不是一次计算出所有结果。
生成器函数
4. 定义:含有yield语句的函数,返回值为生成器对象。
5. 语法:
--创建:
def 函数名():
"""
yield数据
“”“
-- 调用:
for 变量名 in 函数名:
语句
6. 执行过程
1. 调用生成器函数会自动创建迭代器对象。
2. 调用迭代器对象的__next__()方法时才执行生成器对象
3. 每次执行到yield语句时返回数据,暂时离开。
4. 待下次调用__next__()方法时继续从离开处继续执行。
7. 原理
生成迭代器大致规则如下:
- 将yield关键字以前的代码妨碍next方法中。
- 将yield关键字后面的数据作为next方法的返回值。
内置生成器
枚举函数 enumerate 1. 语法: for 变量 in enumerate(可迭代对象): pass for index,元素 in enumerate(可迭代对象): pass 2. 作用: 遍历可迭代对象时,可以建索引与元素组合为一个元组。
函数式编程
1. 定义:
- 用一系列函数解决问题。
- 允许将函数作为参数传入另一个函数。
- 允许函数返回一个函数。
2. 高阶函数: 将函数作为参数或返回值的函数。
3. lambda 表达式
1. 定义:是一种匿名方法。
2. 作用:作为参数传递时语法简洁,优雅,代码可读性强,随时创建和销毁减少程序耦合度。
3. 语法:变量 = lambda 形参:方法体
4. 调用: 变量(实参)
5. 说明:形参没有可以不填
方法体只能有一条语句,切不支持赋值语句
生成器表达式
1. 定义: 用推导式形式创建生成器对象
2. 语法: 变量 = (表达式 for 变量 in 可迭代对象 [if 真值表达式])