• python cookbook


    一 .数据结构

      python collections包中

        deque :固定长度队列,(例如固定长度的cache什么的)

        defaultdict:如果每个键值不存在,默认返回值

        orderdict:有顺序的字典,按照插入的顺序,该结构内部维护了一个根据键插入顺序排序的双向链表。

        counter: 频率计算器,将一个列表冲出现的重复元素,组合成为{元素:频率}字典表,以及一些函数。 

        nametuple:命名记录,大量同样的字段的数据。可以根据字段名字查询值。

        ChainMap:将多个字典映射为一个统一操作

      heapq:排序的堆,

        nlargest:最大的n个数字

        nsmallest:最小的n个数字

        heapq.push,

        heapq.pop

      dict:字典

        zip:将多个列表合成多维tuple单个列表

        列表的keys(),items()支持集合运算

      list:列表

        slice:命名切片 slice(20, 23)

        sorted 函数: 其中的key可以传入callable对象,这个对象对每个value都返回一个值,供排序

          itemgetter:获取字典中的key对应值

          attrgetter:获取对象中的key对应值

        groupby 函数:

      itertools:迭代器

    二.迭代器:

      a.迭代协议: 实现了__iter__()方法,且该方法返回一个实现了 __next__()方法的对象。 (严格来说迭代器只需要实现__iter__方法,不需要实现__next__方法。)

      b.常见的迭代器是如下:即该类本身就是可以迭代的。

    class xxx
        def __iter__():
            return self
        def __next__():
            ...

      c.也可以通过__iter__实现代理迭代,这个时候是不需要__next__方法的。

    #更加一般的迭代形式
    class xxx
        def __iter__():
            return iter(某个实现了__next__的迭代对象或者是一个生成器)

      d.生成器:使用yield的函数,在系统内部被转变成为一个迭代器。生成器很简单明了。迭代器可以包含更多的数据,甚至可以将迭代过程数据给记录下来。因此迭代器具备普遍性,具备更多的功能。

      e.反向迭代:实现了__reversed__函数的类。

      f.迭代工具函数:

    iter, #返回迭代对象 iter(迭代器,末尾值)
    
    next, #返回下个迭代对象 next(迭代器)
    
    enumerate,#重新构建一个迭代器,返回迭代对象与索引
    
    zip,#重新构建一个迭代器,将多个迭代器组合成为一个新的迭代器,返回多个迭代器的值形成的tuple
    
    islice:#给迭代器切片
    
    dropwhile:#丢弃迭代器不需要的数据
    
    permutations:#一个迭代器返回排列
    
    combinations #一个迭代器返回组合
    
    yield from #展开迭代器,跟iter()一样
  • 相关阅读:
    c++程序—冒泡排序法(函数、指针)
    c++程序—统计成绩
    c++程序—冒泡排序法
    c++程序—逆置
    c++程序—五只小猪称体重
    c++程序—goto
    c++程序—乘法表
    c++程序—循环嵌套
    RGB保存 .bmp文件踩坑记
    vdi文件扩容
  • 原文地址:https://www.cnblogs.com/yasmi/p/5017126.html
Copyright © 2020-2023  润新知