目录:
集合类型定义
集合操作符
集合处理方法
集合类型应用场景
集合是多个元素的无序组合
集合用大括号 {} 表示,元素间用逗号分隔
建立集合类型用 {} 或 set()
建立空集合类型,必须使用set()
重要特点:无序,唯一
要符合这些特点,集合要求元素不可更改,不能是可变数据类型。有些同学可能会有疑问:
为什么数据类型是不可改变的呢?
因为如果其中的某一个元素是可以被改变的,它一旦改变之后可能会和其他的元素相同,这样子的话集合类型就会出现错误
有哪些是不可变数据类型呢?
整数,浮点数,复数,字符串类型,元组类型等
哪些是可变数据类型呢?
列表类型是可以被修改的数据类型,这个类型一旦被放到集合中,这个集合就可能会出错
下面举几个例子:
例1
>>> A = {"python", 123, ("python",123)} #使用{}建立集合,元素间用逗号间隔,包含3个元素
{123, 'python', ('python', 123)}
例2
>>> B = set("pypy123") #使用set()建立集合,不用逗号隔开,每个字符都是一个元素
{'1', 'p', '2', '3', 'y'}
例3
>>> C = {"python", 123, "python",123} #考虑到唯一性,该集合只有2个元素,重复的过滤掉
{'python', 123}
我们来看例题:
例4
>>> A = {"p" , "y" , 123}
{'p','y',123}
>>> B = set("pypy123")
{'p','y','1','2','3'}
>>> A-B #返回一个新集合,包含在A中,但是不在B中的的所有元素
{123}
>>> B-A #返回一个新集合,包含在B中,但不在A中的元素
{'3', '1', '2'}
>>> A&B #返回一个新集合,既包含在A中,也包含在B中的元素
{'p', 'y'}
>>> A|B #返回一个新集合,包含在A和B中的所有元素
{'1', 'p', '2', 'y', '3', 123}
>>> A^B #返回一个新集合,包含在A和B中的非相同元素
{123,'1','2','3'}
>>>A<=B #返回False,A不是B的子集
False
>>>A>=B #返回False,A不包含B
False
其实蛮好记忆的,根据图形和字义,很容易能理解每个字符的作用,并差交补,并是合并,所以是两个集合的所有元素,差是差值,类似被减数与减数,交是交集,共同部分,补是去掉相同的,把不相同的补上。
增强操作符就不举例了,不同点在于是返回新的集合,而是更新集合A,以及字符格式有所不同。
例5
>>>collection={1,2,"apple","orange","cat"} # 查看一个数是否在集合中 in
>>>print("Tome" in collection)
False
>>>print("apple" in collection)
True
例6
>>>pets=set() # 集合初始化时用set() pets={}是代表初始化了一个字典集
>>>pets.add("dog") # 集合添加元素用add()方法
>>>pets.add("cat")
>>>pets.add("bird")
>>>pets.add("zebra")
>>>print(pets)
{'cat', 'dog', 'zebra', 'bird'}
>>>pets.discard("zebra") #删除元素用discard()
>>>print(pets)
{'cat', 'dog', 'bird'}
>>>pets.remove("duck") #用remove删除不存在的元素会有报错
Traceback (most recent call last):
File "C:/CIT/test.py", line 7, in
pets.remove("duck")
KeyError: 'duck'
例7
>>>dict1={"cat":1,"dog":2,"bird":3} # 将一个字典集的keys转为集合,用set(字典集名)
>>>print(set(dict1))
{'bird', 'dog', 'cat'}
从以上的例子我们可以得知,集合类型的应用场景有:
(1)包含关系比较,如例5
(2)数据去重,如例3