迭代器与生成器

迭代器的结尾
    StopIteration异常发生,表示迭代器结束
    next 获取迭代器下一个值

代理迭代
    定义__iter__方法可以将迭代操作代理到容器上

使用生成器构建迭代模型
    添加一个 yield语句可一个普通函数转换为一个生成器

反向迭代
    通过实现__reversed__方法可以实现类上的反向迭代,调用时采用reversed函数

迭代器切片
    itertools.islice
    迭代器是不可逆转的,切片也会消耗传入的数据

跳过可迭代对象的开始部分
    from itertools import dropwhile
    for line in dropwhile(lambda line: line.startswith('#'), f)


迭代器输出集合排列
    from itertools import permutations

迭代器输出集合组合
    from itertools import combinations

迭代器输出集合组合,元素可以选择多次
    itertools.combinations_with_replacement

序列索引值迭代
    enumerate

多个序列同时迭代
    zip 压缩两个序列 同时迭代,长度与短序列一致
    itertools.zip_longest  长度与长序列一致

不同集合上元素的遍历
    from itertools import chain
    for x in chain(a,b):
        print(x)


yield from it  ##返回生成器it的所有值

检查是否为可迭代对象
    from collections import Iterable
    isinstance(x, Iterable)

排除字符串和字节迭代对象
    isinstance(x, ignore_types)

合并排序序列的顺序迭代
    for c in heapq.merge(a, b)

迭代器替代while循环
    for chunk in iter(lambda: f.read(10), '')

    iter接收一个可选的callable对象和一个标记值作为输入参数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值