基本数据类型之集合和字符编码
一 集合
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}
需要掌握的内置方法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)