zoukankan      html  css  js  c++  java
  • 集合与字符编码

    集合

    作用:

    1.去重
    2.关系运算
    	共同好友,共同关注....
        交叉并集....
    
    # 用集合就是用上面两个功能 如果用不上 那么就不用
    # 定义
    s = {1,2,3,4,5,6,7,8}
    """
    1.集合内的元素必须是不可变类型
    2.元素与元素之间逗号隔开 不是键值对
    3.集合内的元素也是无序的
    """
    s = {1,2,3,4}本质s = se({1,2,3,4})
    他与字典相比少了键值对,并且集合它本身并不存在索引
    a = {} 默认是字典而不是集合
    与字典,元组,列表一样 但是集合内的值必须是不可变类型的值
    集合内的元素也是无序的	
    # 如何定义空集合
    ss = set()
    print(ss,type(ss))  # set() <class 'set'>
    
    

    集合的关系运算

    #1.合集/并集(|)代表并集,两者没有交集的部分+重复的部分会保留一个
    a = {egon,tom,tank,alex}
    b={tank,alex,goni,tix}
    print(a|b)
    >>>{egon,tom,tank,alex,goni,tix}
    
    #2.交集(&) 在两个集合中都存在的部分
    a = {egon,tom,tank,alex}
    b={tank,alex,goni,tix}
    print(a&b)
    >>>{tank, alex}
    
    #3.差集(-)被减者独有的元素
    a = {egon,tom,tank,alex}
    b={tank,alex,goni,tix}
    print(a-b)
    >>>{egon, tom}
    
    #4.对称差集(^)代表两者没有交集的那部分
    a = {egon,tom,tank,alex}
    b={tank,alex,goni,tix}
    print(a^b)
    >>>{egon, tom, goni, tix}
    
    #5.值是否相等(==)
    a = {egon,tom,tank,alex}
    b={tank,alex,goni,tix}
    print(a==b)
    >>>False
    
    #6.父级前者是否包含后者(>)
    {egon,tom,tank} > {egon,tom}
    >>>True
    
    #7.子集前者是否被后者包含(<)
    {egon,tom} < {egon,tom,tank}
    >>>True
    

    去重

    #集合的去重有局限性
    #1.只能针对不可变类型
    #2.集合本身无序,去重之后无法保留原来的顺序
    #去重的做法
    l = [egon,tom,tank,alex,tank,alex,goni,tix]
    b = set(l)#将列表转成集合
    print(b)
    >>>{egon,tom,tank,alex,goni,tix}
    

    字符编码

    任何一个程序都是先存放与硬盘上的
    要想运行起来 必须先由硬盘读取到内存
    之后cpu去内存中取指然后执行
    在运行的程序产生的数据最先都是存放与内存中的
    

    计算机是基于电工作的 那么计算机只能识别电信号

    计算机内部存储数据用的都是01010101的二进制数据

    文件的后缀名是干嘛的

    文件的后缀名仅仅是给人看的 因为对应计算机来说所有的数据都是0101010的二进制

    普通的文本编辑器和python解释器的工作流程

    相同
    	1.任何的程序要想运行都是先从硬盘读取到内存
        2.文本编辑器和python解释器都会去硬盘中读取你想要读取的文件内容   
    不同
    	3.文本编辑器将文件内容读取之后仅仅是展示给用户看
        而我们的python解释器会识别语法并执行python代码
     # 字符编码研究的范围只针对文本文件 音频、视频这些不包含在内
    
    # 字符编码的发展史
    	1.一家独大
        计算机起源于美国
        美国人用英文交流 但是计算机只能识别二进制数据
        为了能够让计算机识别人类能够读懂的字符,这里面肯定有一个
        人类字符		>>>		计算机二进制数据
        中间的字符与数字的对应关系其实就是一张表
        	ASCII码表
            这张表只记录了英文和数字的对应关系
            用8(bit)来表示一个英文字符
            1bytes = 8bit
            1024bytes = 1KB
            1024KB = 1MB
            1024MB = 1GB
            ...
        
        2.群雄割据
        	中国人也用得起计算机
            	自己做一个汉字跟数字对应关系	GBK
                GBK表
                	汉字、英文 跟数字的对应
                    1bytes来表示英文
                    2bytes来表示汉字
                    	如果出现了生僻字可能还需要用3bytes甚至跟多的bytes
                
            日本人也用得起计算机
            	自己做一个汉字跟数字对应关系	shift_JIS
                GBK表
                	日文、英文 跟数字的对应
                    
            韩国人也用得起计算机
            	自己做一个汉字跟数字对应关系	Euc_kr
                Euc_kr表
                	韩文、英文 跟数字的对应
                    
    """
    我们在输入中文字符的时候
    	1.内部基于GBK翻译成了对应的二进制数据 在内存
    	2.然后将基于GBK编码的二进制数据刷到硬盘 永久保存
    	3.将硬盘中基于GBK编码的二进制数据读取到内存之后按照GBK编码的对应关系翻译成对应的中文
    """
        3.天下一统
        	万国码 unicode
            兼容万国
            并且跟之前所有国家的编码都有对应关系
    		1990开始研究的 1994年才开始正式使用
            
            所有的字符都是用2bytes来存储
            	英文用2bytes
                中文也用2bytes
                
    
    努力学习!
  • 相关阅读:
    win8.1下安装双系统ubuntu14.04.3
    如何使用cmd
    My Test about Mat
    访问Mat矩阵中的元素并为其赋值
    Mat代码操作
    waitKey()
    ASCII码对照表
    vector 中的clear()
    vector 介绍
    Mat的详解
  • 原文地址:https://www.cnblogs.com/Orange-YXH/p/13648122.html
Copyright © 2011-2022 走看看