迭代与生成器

  • 迭代器通过iter方法产生可迭代对象,可迭代对象用next方法进行迭代。iter方法返回self
  • 只要函数定义体有yield关键字,该函数就是生成器函数。从Python源码中我们知道一个技巧,空的生成器用while False来yield None表示
  • 标准库中的生成器:(*iit 表示将it转化为参数列表形式)
    • dropwhile(predicate,it) 第一个假的以及之后
    • takewhile(predicate,it) 第一个假的之前
    • filter(predicate,it) 所有真的
    • filterfalse(predicate,it) 所有假的
    • islice(it,start,stop,step) 切片
    • accumulate(it,[func]) 默认为累加,迭代出Si列表
    • enumerate(it,start=0)
    • map(func, it1, [it2..]) 以iter为行,相当于对列进行处理
    • starmap(func,it) 相当于func(*iit)
    • chain(it1...) 合并
    • chain.from_iterable(it) 相当于chain(*iit)
    • product(it1...repeat=1) ,相当于依次嵌套for循环,重复repeat次。总个数为pi(le(iti))**repeat
    • zip(it1,..) 行转列,最短停止则停止
    • zip_longest(it..fillvalue=None)行转列,最长停止则停止,缺失用fillvalue补齐
    • permutations(it,out_len)产生排列,个数为A(le(iit),out_len)
    • combinations(it,out_len)产生组合,个数为C(len(iit),out_len)
    • combinations_with_replacement(it,out_len) 不限个数组合
    • count(start=0,step=1)无限产生序列
    • repeat(item,[times]) 无限重复元素
    • cycle(it) 无限重复自己
    • groupby(it,key=None) 产出key,group
    • all,any,max,min,reduce,sum

你可能感兴趣的:(迭代与生成器)