一.迭代器
Iterable: 可迭代对象. 内部包含__iter__()函数
Iterator: 迭代器. 内部包含__iter__() 同时包含__next__().
迭代器的特点:
- 节省内存.
- 惰性机制
- 不能反复, 只能向下执⾏行行.
二.生成器
1.获取生成器:
(1)通过生成器函数:
yield:分段执行一个函数。
next():执行到下一个yield。
__ send__()本质与next,传值给上一个yield结束的位置。
(2)生成器表达式:
语法:
lst = (结果 for 变量 in 可迭代对象)
lst = (结果 for 变量量 in 可迭代对象 if 条件)
lst = (i for i in range(10))
2.列表推导式:将生成器表达式 ()换成[].
lst = [结果 for 变量 in 可迭代对象]
lst = [结果 for 变量量 in 可迭代对象 if 条件)]
生成器表达式和列列表推导式的区别:
(1).列列表推导式比较耗内存. ⼀一次性加载. ⽣生成器表达式⼏几乎不占⽤用内存. 使⽤用的时候才分 配和使⽤用内存
(2).得到的值不⼀一样. 列列表推导式得到的是⼀一个列列表. ⽣生成器表达式获取的是⼀一个⽣生成器.
3.字典推导式:
(1)把字典中的key和value互换.
new_dic = {dic[key]: key for key in dic}
(2) 在以下list中. 从lst1中获取的数据和lst2中相对应的位置的数据组成⼀一个新字典.
dic = {lst1[i]:lst2[i] for i in range(len(lst1)) }
4.集合推导式:
去重:
s = {lst2[i] for i in lst1}
重点理解:迭代器及生成器表达式相关的惰性机制,既只有取这个值,才赋值到这里。