所有的代码敲十遍
1、集合
(1)定义:name = {'a',1},定义空集合:name1 = set() name2 = {} # 是字典
元素必须满足三个条件:必须为不可变数据类型;不重复;无序;
num = 'hellooooo'
num1 = set(num)
print(num1)
# 运算结果,其中运用到类型转换和去重
{'h', 'e', 'o', 'l'}
num = set([1,2,3,4,4])
print(num) # 没问题
num1 = set([1,2,[1,2,3]]) # 报错,元素必须是不可变数据类型,会每次取一个元素,但是第三个元素时,取到的是可变类型,就会报错
(2)关系运算: 集合使用场景是:一个集合整体和另一个集合整体做关系运算。
# 取交集
name1 = {'xiaoming', 'xiaoli', 'zhangsan','lisi'}
name2 = {'wangwu','laoliu','xiaoming','xiaoli'}
print(name1 & name2) # {'xiaoming', 'xiaoli'}
print(name1.intersection(name2)) # {'xiaoming', 'xiaoli'}
# 取并集
print(name1 | name2) # {'lisi', 'wangwu', 'xiaoming', 'laoliu', 'xiaoli', 'zhangsan'}
print(name1.union(name2)) # {'lisi', 'wangwu', 'xiaoming', 'laoliu', 'xiaoli', 'zhangsan'}
# 取差集
print(name1 - name2) # {'zhangsan', 'lisi'}
print(name1.difference(name2)) # {'zhangsan', 'lisi'}
# 取对称差集,除了两个集合共同部分的其他元素的集合
print(name1 ^ name2) # {'lisi', 'wangwu', 'laoliu', 'zhangsan'}
(3)去重
局限性:只能对不可变数据类型,不能保证顺序,通常不用集合去重
# 删除
name = {1,2,3}
name.discard(2) # {1,3} 就算删除的元素不存在也不会报错
name.remove(4) # 报错 discard 比remove 的容错性更好
name.pop() # 弹出
# 添加
name.add(4)
print(name) # {1,2,3,4}
# 升级
name.updata({2,3,6}) # {1,2,3,4,6}
编码结论:
1、内存固定使用unicode,我们可以改变的是存入硬盘采用格式
英文+汉字-》unicode-》gbk
英文+日文-》unicode-》shift-jis
万国字符》-unicode-》utf-8
2、文本文件存取乱码问题
存乱了:解决方法是,编码格式应该设置成支持文件内字符串的格式
取乱了:解决方法是,文件是以什么编码格式存如硬盘的,就应该以什么编码格式读入内存
3、python解释器默认读文件的编码
python3默认:utf-8
python2默认:ASCII
指定文件头修改默认的编码:
在py文件的首行写:
#coding:gbk
4、保证运行python程序前两个阶段不乱码的核心法则:
指定文件头
# coding:文件当初存入硬盘时所采用的编码格式