集合+字符编码day07
一、集合
基本使用
1、用途:关系运算,去重
2、定义方式:{}内用逗号分隔开多个元素,每个元素必须都是不可变类型
强调:
1、集合内的元素必须是不可变的类型
2、集合内的元素无序
3、集合内的元素不能重复
单纯用集合去重需要注意的问题
1、去重的目标所包含的值必须是不可变类型
2、去重的结果会打乱原来的顺序
3、常用的操作+内置方法
1、长度len
2、成员运算in和not in
3、|并集
# # print(pythoners | linuxers)
# # print(pythoners.union(linuxers))
#
# #4、&交集
# # print(pythoners & linuxers)
# # print(pythoners.intersection(linuxers))
# # print(linuxers & pythoners)
# #5、-差集
# # print(pythoners - linuxers)
# # print(pythoners.difference(linuxers))
# # print(linuxers - pythoners)
# # print(linuxers.difference(pythoners))
# #6、^对称差集
# print(pythoners ^ linuxers)
# print(pythoners.symmetric_difference(linuxers))
#
# # print(linuxers ^ pythoners)
#8、父集(包含关系):>,>=
# # s1={1,2,3,4,5}
# # s2={1,2,3}
# # print(s1 > s2) # s1包含s2
# # print(s1.issuperset(s2))
# # print(s2.issubset(s1))
#
# # s3={1,2,10}
# # print(s1 > s3)
#
# # s1={1,2,3,4,5}
# # s2={1,2,3,4,5}
# # print(s1 >= s2)
#
# #9、子集(被包含的关系):<,<=
#
# s1={1,2,3,4,5}
# # s1.add(6)
# # print(s1)
#
# # s1.update({4,7,8,9})
# # print(s1)
#
# # res=s1.pop()
# # print(res)
#
# # res=s1.remove(4)
# # print(res)
# # print(s1)
#
该类型总结:
1、可以存多个值,但是值的类型都必须是不可变类型
2、无序
3、集合是可变的类型
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
stu_info=[ {'name':'egon','age':18,'sex':'male'}, {'name':'egon','age':18,'sex':'male'}, {'name':'egon','age':18,'sex':'male'}, {'name':'alex','age':73,'sex':'male'}, {'name':'oldboy','age':84,'sex':'female'}, ] new.info=[] for into in stu_info: if info not in new_info: new_info.append(info) print(new_info)
二、字符编码
1、将人类的字符编码/转换成计算机能识别的文字
2、这种转换必须遵循一套固定的标准,该标准无非是人类字符与数字的对应关系,称之为字符编码表
bit:二进制位
Bytes:字节
ASCII码表:用1Bytes表示一个英文字符
1英文字符=8bit = 1Bytes
GBK:用2Bytes表示一个中文字符,1Bytes去表示英文字符
unicode:内存中使用的是unicode编码,unicode把全世界的字符都建立好对应关系
用2Bytes去表示一个字符
utf-8 #unicode tranform format-8
utf-8 用1Bytes表示英文,用3Bytes表示中文
Unicode:
1、字符兼容万国
2、和老版本的编码表有映射关系
utf-8:可以兼容万国,但是和老版本的编码表没有映射关系
#字符编码需要记住的概念
#01 内存中固定使用unicode编码,我们唯一可以改变的存储到硬盘时使用的编码
#02 要想保证存取文件不乱乱码,应该保证文档当初是以什么编码格式存的,就应该以什么编码格式去读取
03 python3解释器默认编码是UTF-8
python2解释器默认编码是ASCII
在python2中有两种字符串编码格式
1、unicode:
x=u'上'
2、unicode编码后的结果
x='上' #如果文件头为coding:utf-8,那么"上"被存成utf-8格式的二进制
在python3只有一种字符串编码格式:
1、unicode
x='上’
#04 编码与解码
unicode-------编码encode-------->gbk
unicode<-------解码decode--------gbk
#***
#coding:gbk
x='上’
x.decode('gbk')
#coding:gbk
x=u'上'
x.encode('gbk')
x.encode('utf-8')
#在python3中(*****)
x='上'
x只能进行编码
x.encode('gbk')
总结python2与python3:
(***)
在python2中的字符粗类型str都是unicode按照文件头的指定的编码,编码之后的结果
在python2中也可以制造unicode编码的字符串。需要在字符串前加u
(*****)
在python3中的字符串类型str都是unicode编码的
所以python3中的字符串类型可以编码成其他字符编码格式,编码的结果
是bytes类型