python集合
集合(set)
一、什么是集合
集合可以理解成一个集合体,学习python的学生可以看成一个集合体,学习linux的学生也可以看成一个集合体。
-
用途:去重,乱序。用于关系运算的集合体,由于集合体内的元素无序且集合元素不可重复,因此集合可以去重,但是集合是无序的,去重之后会打乱原来元素的顺序。
-
定义:{}内用逗号分隔开多个元素,每个元素必须是不可变的类型。
-
定义空集合
s = {} # 空大括号是字典,不是集合,定义空集合必须得用set()
二,内置方法
2.1优先掌握
-
长度len
s = {1,2,'a'} print(len(s)) #输出: 3
-
成员运算in or not in
s = {1,2,'a'} print(1 in s) print(2 not in s) #输出: True False
-
|并集 union
s1 = {1,2,'a'} s2 = {1,2,3,4,'b'} print(s1|s2) print(s1.union(s2)) #输出: {1, 2, 3, 4, 'b', 'a'} {1, 2, 3, 4, 'b', 'a'}
-
&交集 intersection
s1 = {1,2,'a'} s2 = {1,2,3,4,'b'} print(s1&s2) print(s1.intersection(s2)) #输出: {1, 2} {1, 2}
-
-差集 difference
s1 = {1, 2, 'a'} s2 = {1, 2, 3, 4, 'b'} print(s1 - s2) print(s1.difference(s2)) print(s2 - s1) print(s2.difference(s1)) #输出: {'a'} {'a'} {3, 4, 'b'} {3, 4, 'b'}
-
^对称差集 symmetric_difference
##取出除共有的外 s1 = {1, 2, 'a'} s2 = {1, 2, 3, 4, 'b'} print(s1^s2) print(s1.symmetric_difference(s2)) #输出: {'b', 3, 4, 'a'} {'b', 3, 4, 'a'}
-
==
#比较 s1 = {1, 2, 'a'} s2 = {1, 2, 3, 4, 'b'} print(s1 == s2) #输出: False
-
父集: > >= issuperset
s1 = {1, 2, 'a'} s2 = {1, 2, 'a'} s3 = {1, 2} print(s1 >= s2) print(s1.issuperset(s2)) print(s1 > s3) print(s1.issuperset(s3)) print(s1 >= s3) print(s1.issuperset(s3)) print(s3.issuperset(s1)) #输出: True True True True True True False
-
子集:< <= issubset
s1 = {1, 2, 'a'} s2 = {1, 2, 'a'} s3 = {1, 2} print(s1 <= s2) print(s1.issubset(s2)) print(s3 < s1) print(s3.issubset(s1)) print(s3 <= s1) print(s3.issubset(s1)) #输出: True True True True True True
2.2需要掌握
-
add()添加
s1 = {1, 2, 'a'} s1.add(5) print(s1) #输出: {1, 2, 5, 'a'}
-
remove()移除,没有报错
s1 = {1, 2, 'a'} s1.remove(2) print(s1) #输出: {1, 'a'}
-
difference_update()
# 取出和另外一个集合不同的元素 s1 = {1, 2, 'a'} s2={1,2,4,5,'b','c'} s2.difference_update(s1) print(s2) #输出: {4, 5, 'c', 'b'}
-
discard()删除(抛弃),没有不报错
s1 = {1, 2, 'a'} # s1.remove(3)# 报错 s1.discard(3) print(s1) #输出: {1, 2, 'a'}
-
isdisjoint
# 集合没有共同的部分返回True,否则返回False s1 = {1, 2, 'a'} s2 = {1,2,3,4,5,'b'} s3 = {6,7,8} print(s2.isdisjoint(s1)) print(s2.isdisjoint(s3)) #输出: False True
-
clear
-
copy
-
remove
-
pop(随机删除)
-
discard()抛弃
-
存在一个或者多个值:多个值,不可改变
-
有序或者无序:无序
-
可变或者不可变:可变数据类型