zoukankan      html  css  js  c++  java
  • collections模块,shelve模块

    1. collections

    在内部数据类型的基础上,加上collections模块提供的额外数据类型 namedtuple,deque,Counter
    1.1 namedple
      命名元祖有助于对元祖的每个位置赋予意义(用来产生使用名称来访问元元素的数据对象)
    from  collections import namedtuple   #导入模块collections中的namedtuple功能
    point = namedtuple('point',['x','y']) #定义元祖名称,并对元祖每个元素进行赋予意义
    p = point(1,2)
    print(p.x)
    
    
    作用:增加代码的可读性(namedple是函数,不是类)
    1.2 deque
       deque 使用list存储数据时,按索引访问数据很快,但是插入和删除很慢,
    因为list是线性存储,数据量很大的时候,插入和删除的效率很低
    deque是为了高效实现插入和删除操作的双向列表,适用于队列和栈
            队列:先进先出 FIFO 栈:后进先出 LIFO
    from collections import deque
    q = deque(['a','b','c'])
    q.append('x')
    q.appendleft('z')
    print(q)

      deque实现了list的append()和pop()操作外,还支持了appendleft()和popleft()操作,高效率的对list头部尾部进行操作

      1.3  Counter

        计数,统计出现的次数,默认排序,以字典的键值对形式存储,其中元素为key,计数的值为value
    from collections import Counter
    c = Counter('asdfghjkqgwtezx')
    print(c)
    # 结果:
    Counter({'g': 2, 'a': 1, 's': 1, 'd': 1, 'f': 1, 'h': 1, 'j': 1, 'k': 1,
             'q': 1, 'w': 1, 't': 1, 'e': 1, 'z': 1, 'x': 1})

    2 shelve

      shelve:序列化 基于pickle实现的
    import shelve
    f = shelve.open('sss') #win下生成三个文件 苹果下一个
    f['name'] = 111  #用字典的方式操作,添加键值对,键必须用字符串的形式 值没有要求
    对比json和pickle,shelve不能进行查看,将一个对象持久化的存到文件中,可直接查看值得内容


  • 相关阅读:
    [Java入门] 从键盘输入两个整数,求最小公倍数并输出
    【C#食谱】【面食】菜单3:用泛型替代ArrayList
    C# Stable Sort(稳固排序)
    【C#食谱】【面食】菜单4:List和LinkedList性能比较
    一个非常酷的应用:修改“开始”菜单的显示文本
    我的第一个5年计划
    C#语言重要常识
    决定执行力的49个细节
    .NET资源链接
    标准表达式中数据类型不匹配(Access 时间格式)
  • 原文地址:https://www.cnblogs.com/shicongcong0910/p/10288037.html
Copyright © 2011-2022 走看看