迭代器,生成器

一.迭代器
Iterable: 可迭代对象. 内部包含__iter__()函数
Iterator: 迭代器. 内部包含__iter__() 同时包含__next__().
迭代器的特点:

  1. 节省内存.
  2. 惰性机制
  3. 不能反复, 只能向下执⾏行行.
    二.生成器
    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}

重点理解:迭代器及生成器表达式相关的惰性机制,既只有取这个值,才赋值到这里。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值