集合:是一种可变的数据类型,但是集合里面包含的元素必须是不可变的数据类型,同时集合具有两个鲜明特征:无序性和不重复性。
无序性:集合中的元素都是无序存储的,每次打印或者输出的顺序都是不一样的,因此集合中添加也是无序添。
不重复性:集合会自动判断元素中是否有相同元素,如果存在相同元素,就会自动合并相同的元素为一个
集合的符号: { } ,集合的符号与字典的表示符号相同,但是字典历史存在key和value的而集合中不存在这些,因此系统也是根据内部元素来判断是集合还是字典。
集合的操作:
1.增添:由于集合是无序的所以添加元素也是无序添加
add():类似列表中的append,将整个元素整体添加到集合中
update():列斯列表中的extend,迭代添加,将元素迭代添加到集合中
set2 = {'jerry', 'tony', '陕西', '廖欣', '廖欣'}
set2.add('神')
print(set2)
set2.update('abc')
print(set2)
2.删除:
pop():随机删除集合中的一个元素
remove():根据元素名来删除
clear():清空集合内尔所有元素,使集合变为空集
del: 删除整个集合包括集合名
set2 = {'jerry', 'tony', '陕西', '廖欣', '廖欣'}
print(set2.pop()) # 任意删除,有返回值返回被删除对象
print(set2)
set2 = {'jerry', 'tony', '陕西', '廖欣'}
set2.remove('陕西') # 按元素删除
print(set2)
set2.clear() # 清空集合
print(set2)
del set2 # 删除整个集合,删除之后相当于集合不存在,输出会报错
3.查找:由于集合无序所以只能利用for循环查找,且每次查找的顺序都不一样
set2 = {'jerry', 'tony', '陕西', '廖欣', '廖欣'}
for i in set2:
print(i)
4.求交集:求出两个集合的交集
符号法:&
函数法:intersection()
set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 8, 'jerry'}
set3 = set1 & set2
print(set3)
set4 = set1.intersection(set2)
print(set4)
5.求并集:求两个集合并集
符号法:|
函数法:union()
set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 8, 'jerry'}
set3 = set1 | set2
print(set3)
set4 = set1.union(set2)
print(set4)
6.反交集:只存在于set1不存在与set2与只存在于set2不存在于set1的元素的集合
符号法:^
函数法:symmetric_difference()
set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 8, 'jerry'}
set3 = set1 ^ set2
print(set3)
set4 = set1.symmetric_difference(set2)
print(set4)
7.差集:在set1中但不存在于set2中的元素的集合
符号法:-
函数法:difference()
set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 8, 'jerry'}
set3 = set1 - set2
print(set3)
set4 = set1.difference(set2)
print(set4)
8.超集,子集
set1 = {1, 2, 3}
set2 = {1, 2, 3, 4, 5, }
print(set1 < set2)
print(set1.issubset(set2)) # set1是set2的子集
print(set2 > set1)
print(set2.issuperset(set1)) # set2是set1的超集
9.去重复的应用:可以利用集合的去重复性将列表list转化为集合set型,利用其特性删除重复的元素,达到去重的应用
li1 = [1, 2, 3, 3, 4, 7, 5, 5, 'jerry', 'jerry']
set1 = set(li1)
li1 = list(set1)
print(li1)
10.set是可变数据类型,但是可以转换为不可变数据类型,变的只可以查
将set类型转变为frozenset型。
s = frozenset('jerry')
print(s, type(s))
11 集合