一、集合及其操作
1.介绍
-
作用:
① 去重(集合内不可能出现相同的元素) ② 关系运算 用集合就是用上面这两个功能,如果用不上那就不要使用集合
-
特点:
① 无序 ② 元素必须是不可变元素 ③ 元素不能重合
-
类型转换
能够被for循环遍历的类型都可以被转换成集合
ss = set('hello')
print(ss) # {'l', 'o', 'h', 'e'}
res = ''.join(ss)
print(res) # lohe
- 定义空集合
一定要用关键字set
如:
ss = set()
2.常用操作
对于下面s1和s2两个集合做一些操作
s1 = {'aaa', 'bbb', 'ccc', 'ddd'}
s2 = {'ccc', 'ddd', 'eee', 'fff'}
2.1 求交集
res = s1 & s2
print(res) # {'ddd', 'ccc'}
2.2 求并集
res = s1 | s2
print(res) # {'aaa', 'ccc', 'eee', 'ddd', 'bbb', 'fff'}
2.3 求差集
res = s1 - s2
print(res) # {'bbb', 'aaa'}
2.4 求对称差集
res = s1 ^ s2
print(res) # {'eee', 'bbb', 'fff', 'aaa'}
2.5 父、子集
一个集合包含另一个集合才会有
s1 = {1, 2, 3}
s2 = {1, 2}
print(s1 > s2) # True,代表s1是s2的父集
print(s2 < s1) # True,代表s2是s1的子集
3.常用操作
3.1循环
for item in {1,2,3}:
print(item)
3.2 update
括号里面的对象必须可以被for循环遍历(列表、元组、字符串等,字典只能往集合里增加key,字符串会被拆成一个个“字符”)
s1 = {333, 222, 111}
s1.update({'aaa', 'bbb'})
print(s1) # {'aaa', 'bbb', 333, 222, 111}
3.3 clear
清空集合,得到空集合 set()
3.4 pop
随机删除
返回值为删除的那个值
ss = {1,2,3}
res = ss.pop()
print(ss) # {1, 3}
print(res) # 2
3.5 remove
指定元素删除
返回值为None
ss = {1,2,3}
res = ss.remove(3)
print(ss) # {1, 2}
print(res) # None
3.6 discard
指定元素删除,返回值为None
与remove不同的是,如果指定的元素不存在,不会报错
s1 = {333, 222, 111}
res = s1.discard("aa")
print(s1) # {333, 222, 111} 与remove不同的是,如果删除的值不存在,运行不会报错
print(res) # None
3.7 add
只能添加一个值,添加多个值会报错
s1 = {333, 222, 111}
s1.add("aaa")
print(s1) # {'aaa', 333, 222, 111}
3.8 isdisjoint
用法:s1.isdisjoint(s2)
判断两个集合是否为没有交集,若没有就返回True,有交集就返回False
s1 = {333, 222, 111}
s2 = {"aaa", "bbb"}
print(s1.isdisjoint(s2)) # True
4. 集合类型总结
无序
能存多个值
set集合属于可变类型
二、字符编码
-
ASCII
美国信息交换标准代码,全称 American Standard Code for Information Interchange
ASCII第一次以规范标准的类型发表是在1967年,最后一次更新则是在1986年,到目前为止共定义了128个字符0~31及127(共33个)是控制字符或通信专用字符(其余为可显示字符),
如控制符:LF(换行)、CR(回车)、FF(换页)、DEL(删除)、BS(退格)、BEL(响铃)等;
通信专用字符:SOH(文头)、EOT(文尾)、ACK(确认)等;
ASCII值为8、9、10 和13 分别转换为退格、制表、换行和回车字符。它们并没有特定的图形显示,但会依不同的应用程序,而对文本显示有不同的影响32~126(共95个)是字符(32是空格),其中:
48~57为0到9十个阿拉伯数字。
65~90为26个大写英文字母,
97~122号为26个小写英文字母,
其余为一些标点符号、运算符号等。
常见ASCII码的大小规则:0 ~ 9 < A ~ Z < a ~ z -
GBK
GBK全称《汉字内码扩展规范》,英文名称:Chinese Internal Code Specification
GBK编码,是在GB2312-80标准基础上的内码扩展规范,使用了双字节编码方案,
其编码范围从8140至FEFE(剔除xx7F),共23940个码位,共收录了21003个汉字,
完全兼容GB2312-80标准,支持国际标准ISO/IEC10646-1和国家标准GB13000-1中的全部中日韩汉字,
并包含了BIG5编码中的所有汉字。 -
Unicode
Unicode(又称统一码、万国码、单一码)是计算机科学领域里的一项业界标准,
包括字符集、编码方案等。Unicode是为了解决传统的字符编码方案的局限而产生的,
它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。
1990年开始研发,1994年正式公布。
Unicode通常用两个字节表示一个字符,原有的英文编码从单字节变成双字节,只需要把高字节全部填为0就可以