python中集合类型及操作
特点:集合元素之间无序,每个元素唯一,不存在相同元素,集合元素不可更改,不能是可变数据类型(所以列表就不能是集合的元素)
集合类型的定义
集合用大括号{}表示,元素间用逗号分隔
建立集合类型用{}或set()
建立空集合类型,必须使用set(),因为{}是用来创建空字典的
>>>A = {"python",123,("python",123)}
{123, 'python', ('python',123)}
>>>B = set("pypy123") # set()输入的对象是字符串
{'1', 'p', '2', '3', 'y'}
# 集合对我们来说是无序的,它打印出来的顺序和定义是不一样的
# 集合对计算机来说是有序的,它每次打印出来的顺序是一定的
集合操作符
操作符及应用 |
|
---|---|
S | T | 并,返回一个新集合,包括在集合S和T中的所有元素 |
S-T | 差,返回一个新集合,包括在集合S但不在T中的元素 |
S&T | 补,返回一个新集合,包括集合S和T中的非相同元素 |
S<=T或S<T | 返回True/False,判断S和T的子集关系 |
S>=T或S>T | 返回True/False,判断S和T的包含关系 |
集合处理方法
操作函数或方法 |
|
---|---|
S.add(x) | 如果x不在集合S中,将x增加到S |
S.discard(x) | 移除S中元素x,如果x不在集合S中,不报错 |
S.remove(x) | 移除S中元素x,如果x不在集合S中,产生KeyErrror异常 |
S.clear() | 移除S中所有元素 |
S.pop() | 随机返回S的一个元素,更新S,若S为空产生KeyError异常 |
S.copy() | 返回集合S的一个副本 |
len(S) | 返回集合S的元素个数 |
x in S | 判断S中元素x,x在集合S中,返回True,否则返回False |
x not in S | 判断S中元素x,x不在集合S中,返回True |
set(x) | 将其他类型x转变为集合类型 |
集合类型应用场景
1.包含关系比较
>>>"P" in {"p", "y", 123}
True
>>>{"p", "y"} >= {"p", "y", 123}
False
2.数据去重(利用集合类型所用元素无重复)
>>>ls = ["p", "p", "y", "y", 123]
>>>s = list(set(ls))
['p', 'y', 123]