zoukankan      html  css  js  c++  java
  • Python3基础12(collections、struct、itertools、chardet等的使用)

    import struct
    import base64
    import itertools
    import chardet
    from collections import namedtuple,defaultdict,OrderedDict,Counter

    # namedtuple 新建1个元组,并设置元素的属性和个数
    # namedtuple('名称','列表')
    # 例如 namedtuple('Circle', ['x', 'y', 'r'])

    # dqueue 高效插入和删除操作的双向列表,适合于队列和栈

    # defaultdict 用于键不存在时,返回一个默认值,用于字典中
    # 创建默认值的字典
    # defaultdict(lambda :'n/a')

    # ChainMap

    # OrderedDict 使字典有序,用 OrderedDict 按照插入的顺序排列
    # 为FIFO(先进先出)的dict,当字典满时,需要再插入数据,会删除最早插入的数据

    # Counter 统计字符中各字符的个数
    c=Counter()
    for i in 'this is a stirng':
    c[i]=c[i]+1

    print(c)


    #base64 用64个字符,表示二进制数据的一种方式,用于处理二进制数据与字符串之间进行转换,可被认为是进行简单加密和解密
    # 每3个字节一组 共3*8=24bit 每组6bit
    # 二进制数据不足3的倍数,则在x00后加上不定数的=,加几个=,则表示补了几个字节
    # 适用于不重要的信息进行加密,一般用户证书 cookie 网页 及在url传输少量二进制数据

    # struct 用于处理bytes与其他二进制数据之间的转换

    # 任意类型->bytest
    # > 网络序 I 无符号整数
    result=struct.pack(">I",24)
    print(result)

    # bytes->任意类型
    # 后面的bytes依次变为I H 4字节无符号整数 I 2字节无符号整数
    result=struct.unpack(">IH",b'xf0xf0xf0xf0x80x80')
    print(result)


    # itertools 用于操作迭代对象

    #把一个序列无线重复下去
    # itertools.cycle()

    #把一个元素无线重复下去,除非指定次数
    # itertools.repeat()

    # 可通过条件判断取出一个有限序列
    c=itertools.count(1,5)
    r=itertools.takewhile(lambda x:x<=10,c)
    print(list(r))

    # 可以把一组迭代对象串联起来,形成一个更大的迭代器
    itertools.chain()

    # 把迭代器中相邻的重复元素挑出来放在一起,返回值做为组的key
    for key,group in itertools.groupby("testing",lambda t:t.upper()):
    print(key,list(group))


    # xml 用于处理xml格式文件及格式数据
    # sax:流模式 边解析边读,占用内存小,解析快,需要自定义处理事件
    # dom:树模式 解析慢 占用内存大,但可以遍历任意节点

    # chardet 用于检测对象使用了哪类编码
    # result=chardet.detect(b"test")
    data="test".encode('utf-8')
    result=chardet.detect(data)
    print(result)
  • 相关阅读:
    *三维数组的初始化及遍历三个for循环
    *二维数组的初始化
    用while判读循环语句1+1/2!+1/3!+...1/20!的和阶乘的计算方法 式:n!=n*(n-1)!
    求一组数组各个元素的和*
    *求一组数组各个元素的和*
    使用for循环输出杨辉三角-还是不懂得需要复习
    使用for循环输出空心的菱形的思路-还是没有办法理解
    Break用法再举例
    continue用来结束本次循环 break用来结束整个循环体
    LeetCode.1154-一年中的第几天(Day of the Year)
  • 原文地址:https://www.cnblogs.com/NiceTime/p/10089510.html
Copyright © 2011-2022 走看看