• 基本数据类型之集合和字符编码


    一 集合

    1、定义

      {}内用逗号分隔开多个元素,元素满足下列条件:

        a、集合内元素为不可变型

          print(set([1,1,1,1,1,1,[11,222]]) #报错

        b、集合内元素无序

        c、集合内元素不能重复,重复的元素只算一个

    2、内置方法

    ==============关系运算=============

    friends1 = {"zero","kevin","jason","egon"}
    friends2 = {"Jy","ricky","jason","egon"}

      a、取交集:两个集合相同的元素

        res = friends1 & friends2

      b、取并集/合集:两集合所有的元素

        res = friends1 | friends2

      c、取差集:一个集合里取出共有的元素,剩下来的为差集

        friends1 的:res = friends1 - friends2

        friends2 的:res = friends2 - friends1

      d、对称差集:两个集合独有的元素,即去除共同的元素

        res = friends1 ^ friends2

      e、父子集

        1、s1:{1,2,3}

           s2:{1,2,4}  #不存在包含关系

        print(s1>s2)  #False

        2、只有当集合s2从属于s1的时候,s1才能成为s2的父集

          当s1=s2时,则互为父子集

    ================去重===============

      只针对不可变型,无法保证原来的顺序

    l=[
        {'name':'lili','age':18,'sex':'male'},
        {'name':'jack','age':73,'sex':'male'},
        {'name':'tom','age':20,'sex':'female'},
        {'name':'lili','age':18,'sex':'male'},
        {'name':'lili','age':18,'sex':'male'},
    ]
    new_l=[]
    for dic in l:
        if dic not in new_l:
            new_l.append(dic)

    print(new_l)
     

    ####其他内置方法

    s={1,2,3}
    需要掌握的内置方法
      1:discard
        s.discard(4)   # 删除元素不存在do nothing
        print(s)
        s.remove(4)   # 删除元素不存在则报错
      2:update
        s.update({1,3,5})
        print(s)
      3:pop
        res=s.pop()
        print(res)
      4:add
        s.add(4)
         print(s)
     

    二 字符编码

    详情参考:https://zhuanlan.zhihu.com/p/108805502

    ##分析过程

      x="上"
                        内存
    上-------翻译-----》0101010
    上《----翻译《-----0101010
     
    字符编码表就是一张字符与数字对应关系的表
     
     
    a-00
    b-01
    c-10
    d-11
     
    ASCII表:
        1、只支持英文字符串
        2、采用8位二进制数对应一个英文字符串
     
    GBK表:
        1、支持英文字符、中文字符
        2、
        采用8位(8bit=1Bytes)二进制数对应一个英文字符串
        采用16位(16bit=2Bytes)二进制数对应一个中文字符串
     
     

    unicode(内存中统一使用unicode):

        1、
            兼容万国字符
            与万国字符都有对应关系
        2、
        采用16位(16bit=2Bytes)二进制数对应一个中文字符串
        个别生僻会采用4Bytes、8Bytes
     
     
        unicode表:
                              内存
            人类的字符---------unicode格式的数字----------
                                 |                     |
                                 |                     |
                                 |
                                硬盘                    |
                                 |
                                 |                     |
                                 |                     |
                            GBK格式的二进制       Shift-JIS格式的二进制
     
            老的字符编码都可以转换成unicode,但是不能通过unicode互转
     
     
    utf-8:
        英文->1Bytes
        汉字->3Bytes
     
     
     

    结论:

        1、内存固定使用unicode,我们可以改变的是存入硬盘采用格式
            英文+汉字-》unicode-》gbk
            英文+日文-》unicode-》shift-jis
            万国字符》-unicode-》utf-8
     
        2、文本文件存取乱码问题
            存乱了:解决方法是,编码格式应该设置成支持文件内字符串的格式
            取乱了:解决方法是,文件是以什么编码格式存如硬盘的,就应该以什么编码格式读入内存
     
     
     

    其他内置方法
    s={1,2,3}
    需要掌握的内置方法1discard
    s.discard(4) # 删除元素不存在do nothing
    print(s)
    s.remove(4) # 删除元素不存在则报错


    需要掌握的内置方法2update
    s.update({1,3,5})
    print(s)

    需要掌握的内置方法3pop
    res=s.pop()
    print(res)

    需要掌握的内置方法4add
    s.add(4)
    print(s)
  • 相关阅读:
    Python随心记---数据类型
    Pycharm报错解决:error:please select a valid Python interpreter 及一些基本设置
    Python随心记--用户登录锁定
    Python随心记-continue 和 break的区别
    Python随心记
    PHP随笔-判断访问者的设备
    JFinal架构简介
    com.microsoft.sqlserver.jdbc.SQLServerException: 到主机 的 TCP/IP 连接失败。 java.net.ConnectException: Connection refused: connect。ecplise连接sqlserver失败,解决方案。亲测有效!!!
    什么是maven,jar包的查找过程?
    SVN:项目管理工具
  • 原文地址:https://www.cnblogs.com/NevMore/p/12482319.html
Copyright © 2020-2023  润新知