集合
- 集合类型和数学中的集合概念一致
- 几何元素之间无序,每个元素唯一,不存在相同元素
- 集合中的元素是不可修改的
- 用{}表示,元素之间用逗号分隔
- 建立空集合必须使用set()函数
B = set("pypy123") //{'1','p','2','3','y'}
集合的运算操作
- A|B 集合的并
- A-B 集合的差
- A&B 集合的交
- A^B 集合的补(返回一个集合,包括集合A和集合B中不相同的元素)
- A<=(<)B 返回true或false,判断子集
- A>=(>)B 返回true或false,判断包含关系
(真太方便了。。。!)
补充:A|=B,A&=B,A-=B,A^=B 也是可以使用的! - s.add(x) 添加x
- s.discard(x) 移除x(即使x不在集合s中,也不会报错)
- s.remove(x) 移除x(如果x不在集合s中,会报错)
- s.clear(x) 清除
- s.pop() 随机取出一个元素
- s.copy() 返回s的一个副本
- len(s) 返回集合中元素个数
- x in s 判断x是否在s中
- x not in s 判断元素是否不在s中
- set(x) 将其他不是集合类型的类型变成集合
set可以用来数据去重qwq
序列
序列是具有先后关系的一维元素向量,元素类型可以不相同(可以加入字符串类型,列表类型)
序列的操作
- x in s 判断x是否是s中的元素
- x not in s 判断x是否不是s中的元素
- x+s 连接两个序列x和s
- x**n 或 n*x 将序列x复制n此
- s[i] 索引,返回s中的第i个元素
- s[i:j]或s[i:j:k] 切片
- s[::-1] 对s取反
- len(s) 返回序列个数
- min(s) 返回可比较序列中的最小值
- max(s) 返回可比较序列中的最大值
- s.index(x)或s.index(x,i,j) 找到序列从i开始到j(不包含)位置中第一次找到x的下标
- s.count(x) 表示s中出现x的次数
元组类型
元组一旦创建就不能修改
使用小括号()或tuple()创建,元素间用逗号分隔
使用时可以使用或者不使用小括号
列表类型
是序列类型的一种拓展,使用[]创建
c++里数组和vector以及其他拓展功能的奇怪结合体??
- ls[i] = x 替换列表ls第i元素为x
- ls[i: j: k] = lt 用列表lt替换ls切片后所对应的元素子列表
- del ls[i] 删除列表ls中第i元素
- del ls[i:j:k] 删除列表ls中第i到第j以k为步长的元素
- ls += lt 更新列表ls,将列表lt的元素增加到列表ls中
- ls *= n 更新列表ls,使其元素重复n次
- ls.append(x) 在列表最后添加x
- ls.clear() 清除
- ls.copy 生成一个新列表,赋值ls中所有元素
- ls.insert(i,x) 在列表ls的第i位置增加元素x
- ls.pop(i) 将列表ls中第i位置取出并删除该元素
- ls.remove(x) 将列表ls中出现的第一个元素x删除
- ls.reverse() 将列表ls中的元素反转
sorted() 对列表进行排序
字典类型
(大概是C++ STL里面的map??)
- 键值对:键是数据索引的拓展
- 字典是键值对的集合,键值对之间无序
- 采用大括号或dict()创建,键值对用:表示
{键1:值1,键2:值2......}
- {}来创建空的字典类型,而不是set类型(set可以用set()创建)
操作方法
- del d[k] 删除字典d中键k对应的数据值
- k in d 判断键k是否在字典d中
- d.keys() 返回字典d中所有的键的信息
- d.values() 返回字典d中所有值的信息
- d.items() 返回字典d中所有键值对的信息
- 新增元素可以(像map一样)直接赋值来实现
- d.get(s,x) 判断s是否在d中,如果是,给出出现次数,如果不是,给出x