集合与字符编码

集合

作用:

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
            
posted @ 2020-07-14 21:44  Orange-ONE  阅读(87)  评论(0编辑  收藏  举报