集合
作用:
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