一.标识
# 标识,用{}或set()标识,元素间用逗号隔开
a={1,2,3}
print(a)#输出{1, 2, 3}
b=set((1,2,3))
print(b)#输出{1, 2, 3}
#如果要申请一个空的集合就必须用set()
print(set())#输出set()
#与列表元组一样,集合的元素类型也可以不同
a={"编程八点档",666,(1,2)}
print(a)#输出{(1, 2), 666, '编程八点档'}
#注意,集合的元素不能是列表类型
#集合两大特点:无序,不重复。字符串、列表、元组都是有序序列
#集合是无序的,不能通过索引访问
a={1,2,3}
print(a[0])#显示报错TypeError: 'set' object does not support indexing
#集合内的元素不能是重复的,如果重复则会自动去掉重复的元素
a={1,2,1,3}
print(a)#输出{1, 2, 3}已经去掉了重复的元素
二.集合的运算
#集合支持:交、并、补运算
#或|,用|求并集
a={1,2,3,666}
b={"编程八点档",666,(1,2)}
print(a|b)#输出 {(1, 2), 1, 2, 3, '编程八点档', 666},即a和b的所有元素
#与&,求交集
a={1,2,3,666}
b={"编程八点档",666,(1,2)}
print(a&b)#输出{666},即a与b共有的元素
#补集,用-求补集
a={1,2,3,666}
b={"编程八点档",666,(1,2)}
print(a-b)#输出{1, 2, 3},即得到a中包含但b中不包含的元素
#用^求并集-交集
a={1,2,3,666}
b={"编程八点档",666,(1,2)}
print(a^b)#输出{(1, 2), 1, 2, 3, '编程八点档'},即得到的是去掉a和b的公共部分的其他剩余部分的元素
三、集合的内置方法
1.求集合长度
#1.求集合长度,即求集合元素的个数,用len()
a={"编程八点档",666}
print(len(a))#输出2,表示集合中有两个元素
2.添加元素
#2.添加操作,用a.add()或a.update()
#不同的是.add()中的只能是数字,字符串和元组类型,
# 而.update()中可以是字符串、列表、元组、集合类型,但不能是数字
#add()
a={"编程八点档",666}
a.add((1,2))#向集合中添加元组(1,2)
print(a)#输出{(1, 2), 666, '编程八点档'}
#update()
a={"编程八点档",666}
a.update((1,2))#将()中的每一个元素都作为新元素,添加到集合a中
print(a)#输出{1, '编程八点档', 2, 666}
3.删除
#3.删除
#用remove()删除集合中的元素
a={"编程八点档",666,(1,2)}
a.remove((1,2))
print(a)#输出{'编程八点档', 666}
#也可以用.discard(),与.remove()用法类似
a={"编程八点档",666,(1,2)}
a.discard((1,2))
print(a)#输出{'编程八点档', 666}
#随机删除元素,用.pop()随机删除一个元素
a={"编程八点档",666,(1,2)}
a.pop()
print(a)#输出{'编程八点档', 666}
#清空集合,用.clear()清空集合
a={"编程八点档",666,(1,2)}
a.clear()
print(a)#输出 set(),清空后集合依然存在
4.判断元素是否在集合中
#4.判断元素是否在集合中,用in
#如果在,返回TRUE,否则返回false
a={"编程八点档",666}
"is" in a#判断is是否在a中,is不在a中返回False
5.求两个元素的交集
#5.求两个集合的交集
#有两种方法:a.intersection(b)和a.intersection_update(b)
#和与&的作用一样,得到a和b共有的元素。
# 不同的是.intersection()会返回一个新的集合,并不会对原有的集合造成改变
a={"编程八点档",666}
b={(1,2),666}
c=a.intersection(b)
print(c)#输出{666},
print(a)#输出{'编程八点档', 666},原有的集合a没有发生改变
#而.intersection_update()会将结果赋给原有的集合a
a={"编程八点档",666}
b={(1,2),666}
a.intersection_update(b)
print(a)#输出{666},将结果赋给原有的集合a,原有的集合a发生了改变
6.求两个集合的差集
#6.求两个集合的差集
#有两种方法:.difference()和.difference_update()
#a.difference(b)和a.difference_update(b)
# 和-的作用一样,求a中包含而b中不包含的元素
#不同的是.difference()会返回一个新的集合,并不会对原有的集合a造成改变
a={"编程八点档",666}
b={(1,2),666}
c=a.difference(b)
print(c)#输出{'编程八点档'}
print(a)#输出{'编程八点档', 666} 集合a并没有发生改变
#a.difference_update(b)将结果赋给原有的集合a
a={"编程八点档",666}
b={(1,2),666}
c=a.difference_update(b)
print(c)#输出None
print(a)#输出{'编程八点档'},将结果赋给原有的集合a
7.求两个集合的并集
#7.求两个集合的并集
#用.union()
a={"编程八点档",666}
b={(1,2),666}
c=a.union(b)
print(c)#输出{(1, 2), 666, '编程八点档'},得到a和b中包含的所有元素
8.求并集-交集
#8.并集-交集
#有两种方法,跟^的功能一样:.symmetric_difference()和symmetric_difference_update()
#即得到的是去掉a和b的公共部分的其他剩余部分的元素
#不同的是symmetric_difference()会得到一个新集合,原有集合a的值不变
a={"编程八点档",666}
b={(1,2),666}
c=a.symmetric_difference(b)
print(c)#输出{(1, 2), '编程八点档'}
print(a)#输出{666, '编程八点档'},原有集合a的值不变
#而symmetric_difference_update()则会将值赋给原有的集合a
a={"编程八点档",666}
b={(1,2),666}
c=a.symmetric_difference_update(b)
print(c)#输出None
print(a)#输出{(1, 2), '编程八点档'},将值赋给原有的集合a
9.判断两个集合是否包含相同元素
#9.判断两个集合是否包含相同元素
#用.isdisjoint()
#如果没有相同元素就返回True,否则返回False
a={"编程八点档",666}
b={(1,2),666}
a.isdisjoint(b)#a和b有相同元素,返回False
10.判断是否为子集
#10.判断是否为子集
#用.issubset()
#a.issubset(b)判断集合a是否为集合b的子集
#如果是,返回True,否则返回False
a={666,(1,2)}
b={666,(1,2),3}
a.issubset(b)#集合a为集合b的子集,返回True
#如果反过来判断集合b是否为集合a的子集
#用a.issuperset(b)
#如果是,返回True,否则返回False
a={666,(1,2)}
b={666,(1,2),3}
a.issuperset(b)#集合b不是集合a的子集,返回False