集合

  • 集合类型和数学中的集合概念一致
  • 几何元素之间无序,每个元素唯一,不存在相同元素
  • 集合中的元素是不可修改的
  • 用{}表示,元素之间用逗号分隔
  • 建立空集合必须使用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