zoukankan      html  css  js  c++  java
  • Python基础六编码转换和copy的问题

    一、昨日内容回顾
        字典
      setdefault()
      dic['key'] = value
    .pop()
    .popitem()
    .clear()
    del dic['key']
    dic['key']='v'
    .update(dic)
    .update(name='alex')
     
    dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};
    
    print "dict['Name']: ", dict['Name'];
    print "dict['Age']: ", dict['Age'];
    #以上实例输出结果:
    #dict['Name']:  Zara
    #dict['Age']:  7
            
            练习题:
     
    二、数据类型的补充 ***
        int
        str
        bool
        list循环列表时尽量不要改变列表大小,会影响各数据的索引值
        tuple
        dict在循环一个字典时不能改变字典的大小,会报错。
        set 元组中只有一个元素并且没有逗号“,”,则就不是元组,而就是这个元素而已
    数据类型之间的转换补充:
        str-->list  split ***
        list -->str join ***
        bool:False 0和各种空
        list<-->tuple 
        list <--dict 字典不能转化成列表 list(dict)将字典中键转换成list
        tuple<--dict 
        list>-->set ***
    三、小数据池和代码块
    == 比较运算符
    id()查内存地址
    is 判断两端的元素内存地址是否相同,相同返回True,否则返回False
    代码块
    为了节省内存,提升性能。产生了两种优化机制:
    个人理解每行代码是一个代码块,每个py文件是一个代码块。
    1小数据池(驻留机制,驻驻存机制,字符串的缓存机制等)适应的数据类型:str(一定条件下的str满足小数据池) bool    int(限制:-5~256)
    2代码块内的缓存
    #如果你在同一个代码块中,用同一个代码块中的缓存机制
    #如果你在不同代码块中,用小数据池
    四、编码转换
        ASCII:
        unicode:
        utf-8:
        gbk:
    1那么他们之间不能互相识别。(报错,或乱码)
    2规定:文字通过网络传输,或者硬盘存储不能使用unicode的编码方式。
    大前提:
               Python3环境:
                唯独str类型在内存中的编码方式是unicode
               Python3版本中的str不能用于直接的网络传输和文件存储
                补充一个数据类型:bytes(与str是孪生兄弟方法一毛一样)
    由于中文或其他的非英文的bytes形式显示的是十六进制的形式,不方便阅读与编写,因此bytes在需要网络传输和文件存储时就要考虑一下。
    str-->bytes(gbk utf-8)
    即unicode --> (gbk utf-8)
    .encode('gbk')#编码 表示编成gbk码
    .decode('gbk')#解码 表示解成unicode码   
    a = "中国"
    b = "abc"
    a = a.encode("gbk").decode("gbk").encode("utf-8").decode("utf-8")
    b = bytes(b, encoding="utf-8")
    print(a)
    print(b)
    运行结果:

    中国
    b'abc'
     
     
    五、深浅copy
    浅copy
    会在内存中开辟一个新的空间,内部元素沿用原来的
    深copy
    会在内存中开辟一个新的空间,将原列表以及列表里面的可变数据类型重新创建一份,不可变的数据类型沿用原来的
     
     
        那么切片得来的列表与原来的是什么关系呢?深copy还是浅copy呢?***
                全切得到的list是对原list进行的浅copy
                半切当然是得到一个新的
    六、集合
        set 1={'eiya', 'maya', 1, 2, 3}
        集合本身是一个可变的数据类型,它要求里面的元素是一个不可变的类型(可hash)
        集合可以实现去重的功能
    特点:
            1天然去重
            2数据分析
            3是无序的不可以通过索引去查询
            4集合里面的元素一定是不可变的(可hash)
    集合的操作:
            1创建:set = {'w', 'a', 'i'}
            2增:set.add("wow")    set.update()迭代的增加 
            3删:set.remove('wow')  删除一个指定的元素  set.pop()随机删除一个元素
    set.clear()清空集合
    del set 删除集合
            4改、查 没有直接的方法完成这两个动作,但是可以通过间接的方式实现(如删掉一个,再添加一个)
    其他操作:

    交集
    &或者.intersection()方法
    并集
    |或者.union()方法
    差集
    -或者.difference()方法
    反交集
    ^或者symmetric_difference()
    子集和超集
    set1 < set2(被包含的是儿子辈儿的“,即子集)
    .issuperset()方法判断返回bool值
    frozenset
    不可变集合,让集合编程不可变类型
     
     
    面试超高频考题:***
            
     
  • 相关阅读:
    mysql常用操作语句
    开启端口命令
    在linux终端远程登陆linux服务器
    CentOS个人目录下中文路径转英文路径
    安装MariaDB和简单配置
    centos 7.1 apache 源码编译安装
    PHP页面跳转
    一亿个不重复的随机数算法
    HTML中添加背景
    SQL语法
  • 原文地址:https://www.cnblogs.com/gzying-01/p/10180627.html
Copyright © 2011-2022 走看看