python3 集合 set
- 1.集合set简介
- 2.集合运算
- 3.集合基本操作
- 集合内置方法
- 1. set.add(elem) 向集合set添加元素elem
- 2.set.clear() 清空集合
- 3.set.copy() 复制集合
- 4.
set1.difference(set2)求差集,返回一个新集合 - 5.
set1.difference_update(set2)求差集,移除两个集合中都存在的元素,直接在set1里面移除 - 6. set.discard(value) 删除集合中指定元素
- 7.
set.intersection(set1, set2 ... etc)求集合set与其它集合的交集,返回一个新集合 - 8.
set.intersection_update(set1, set2 ... etc)求集合set与其它集合的交集,直接在集合set中移除 - 9.
set1.isdisjoint(set2)判断set1与set2是否有相同元素,有返回False,反之True - 10.set1.issubset(set2) 判断集合set1 是否是参数(集合set2)的子集
- 11.set1.issuperset(set2) 判断集合set1是否是参数(集合set2)的父集
- 12.
set.pop()随机移除一个元素 - 13.
set.remove(item)移除指定元素,移除元素不存在时会报错 - 14.
set1.symmetric_difference(set2)返回两个集合中不重复元素组成的一个新集合(对称差集)等同于set1 ^ set2 - 15.set1.symmetric_difference_update(set2) 将set1中与set2相同的部分删掉,并将set2中不同的部分添加到set1中
- 16.
set.union(set1, set2...)求集合set与其它集合的并集 - 17.
set1.update(set2)添加新的元素或集合到set1中
1.集合set简介
集合(set)是一个无序的不重复元素序列。
可以使用大括号{} 或者 set() 函数创建集合,注意:创建一个空集合必须使用set() 而不是{} , 因为{}是用来创建一个空字典。
2.集合运算
a = set('python')
b = set('php')
print(a-b)
print(a|b) #并集
print(a&b) #交集
print(a^b) #补集
---------------------------------------
{'y', 't', 'n', 'o'}
{'y', 't', 'o', 'h', 'n', 'p'}
{'p', 'h'}
{'y', 't', 'o', 'n'}
3.集合基本操作
1.添加元素
1.set.add(x) 将元素x添加到集合set中
将元素x添加到集合set中,若x已存在,则不进行任何操作
set1 = {'python', 'java' , 'php' , 'html'}
set1.add('css')
print(set1)
-------------------------------
{'html', 'php', 'css', 'java', 'python'}
2.set.update(x) x可以有多个,用 “,” 隔开
set1 = {'python', 'java' , 'php' , 'html'}
set1.update('C++' , 'C#' , [1,2,3])
print(set1)
---------------------------------------
{'#', 1, '+', 2, 3, 'C', 'php', 'html', 'python', 'java'}
2.删除元素
1.set.remove(x) 将元素x从集合set中移除,若x不存在与集合中,则会发生错误
set1 = {'python', 'java' , 'php' , 'html'}
set1.remove('python')
print(set1)
--------------------------------------------
{'java' , 'php' , 'html'}
2. set.discard(x) 若x不存在于集合set中,也不会发生错误
set1 = {'python', 'java' , 'php' , 'html'}
set1.discard('python')
print(set1)
--------------------------------------------
{'java' , 'php' , 'html'}
3. set.pop()随机删除集合的一个元素
set1 = {'python', 'java' , 'php' , 'html'}
set1.pop() #随机删除一个元素,每次结果都有可能不一样
print(set1)
--------------------------------------------
{'java' , 'php' , 'html'}
3.计算集合元素个数 len(set)
4.清空集合 set.clear()
5.判断元素是否在集合中 x in set
集合内置方法
1. set.add(elem) 向集合set添加元素elem
描述: 向集合set添加元素elem,若elem存在,则不执行任何操作
语法:set.add(elem)
参数:elem--必需,要添加的元素
返回值:无
set1 = {'python', 'java' , 'php' , 'html'}
set1.add('C++')
print(set1)
-----------------------------------------------
{'python', 'java' , 'php' , 'html', 'C++'}
2.set.clear() 清空集合
描述:清空集合
语法:set.clear
参数:无
返回值:无
set1 = {'python', 'java' , 'php' , 'html'}
set1.clear()
print(set1)
-----------------------------------------------
set()
3.set.copy() 复制集合
描述:复制集合
语法:set.copy()
参数:无
返回值:无
set1 = {'python', 'java' , 'php' , 'html'}
set2 = set1.copy()
print(set2)
-----------------------------------------------
{'python', 'java' , 'php' , 'html'}
4.set1.difference(set2) 求差集,返回一个新集合
描述:difference() 方法用于返回集合的差集,即返回的集合元素包含在第一个集合中,但不包含在第二个集合(方法的参数)中。
语法:set1.difference(set2)
参数:set2 -- 必需,用于计算差集的集合
返回值:返回一个新集合
set1 = {'python', 'java' , 'php' , 'html'}
set2 = {'C#' , 'C++' , 'css' , 'python'}
set3 = set1.difference(set2)
print(set3)
-----------------------------------------------
{'java' , 'php' , 'html'}
5.set1.difference_update(set2) 求差集,移除两个集合中都存在的元素,直接在set1里面移除
描述:移除两个集合中都存在的元素
语法:set1.difference_update(set2)
参数:set2 -- 必需,用于计算差集的集合
返回值:无
set1 = {'python', 'java' , 'php' , 'html'}
set2 = {'C#' , 'C++' , 'css' , 'python'}
set1.difference_update(set2)
print(set1)
-----------------------------------------------
{'java' , 'php' , 'html'}
6. set.discard(value) 删除集合中指定元素
描述:discard()方法用于移除指定的集合元素
该方法不同于remove()方法,因为remove()方法在移除一个不存在的元素时会发生错误,而discard()方法不会。
语法:set.discard(value)
参数:value -- 必需,要移除的元素
返回值:无
set1 = {'python', 'java' , 'php' , 'html'}
set1.discard('python')
print(set1)
-----------------------------------------------
{'java' , 'php' , 'html'}
7.set.intersection(set1, set2 ... etc) 求集合set与其它集合的交集,返回一个新集合
描述:intersection()方法返回两个或更多集合中都包含的元素,即交集。
语法:set.intersection(set1, set2 ... etc)
参数:set1 -- 必需,要查找相同元素的集合
set2 -- 可选,其它要查找相同元素的集合,可以多个,多个使用逗号,隔开
返回值:返回一个新的集合
set1 = {'python', 'java' , 'php' , 'html'}
set2 = {'python', 'C++' , 'C#' , 'css'}
print(set1.intersection(set2))
-----------------------------------------------
{'python'}
8.set.intersection_update(set1, set2 ... etc) 求集合set与其它集合的交集,直接在集合set中移除
描述:intersection_update()方法返回两个或更多集合中都包含的元素,即交集。
intersection_update()不同于intersection()方法,因为intersection()方法返回一个新的集合,而intersection_update()方法是在原始的集合上移除不重叠的元素
语法:set.intersection_update(set1, set2 ... etc)
参数:set1 -- 必需,要查找相同元素的集合
set2 -- 可选,其它要查找相同元素的集合,可以多个,多个使用逗号,隔开
返回值:无
set1 = {'python', 'java' , 'php' , 'html'}
set2 = {'python', 'C++' , 'C#' , 'css'}
set1.intersection_update(set2)
print(set1)
-----------------------------------------------
{'python'}
9.set1.isdisjoint(set2) 判断set1与set2是否有相同元素,有返回False,反之True
描述:判断set1与set2是否有相同元素,有返回False,反之True
语法:set1.isdisjoint(set2)
参数:set2 -- 必需,要比较的集合
返回值:布尔值,有为False,反之True
set1 = {'python', 'java' , 'php' , 'html'}
set2 = {'python', 'C++' , 'C#' , 'css'}
print(set1.isdisjoint(set2))
-----------------------------------------------
False #有共同的元素'python',所以返回False
10.set1.issubset(set2) 判断集合set1 是否是参数(集合set2)的子集
描述: 判断集合set1 是否是参数(集合set2)的子集
语法:set1.issubset(set2)
参数:set2 -- 必需,要比较查找的集合
返回值:布尔值
set1 = {'python'}
set2 = {'python', 'C++' , 'C#' , 'css'}
print(set1.issubset(set2))
-----------------------------------------------
True
11.set1.issuperset(set2) 判断集合set1是否是参数(集合set2)的父集
描述:判断集合set1是否是参数(集合set2)的父集
语法:set1.issuperset(set2)
参数:set2 -- 要比较查找的集合
返回值:布尔值
set1 = {'python', 'java' , 'php' , 'html'}
set2 = {'python'}
print(set1.issuperset(set2))
-----------------------------------------------
True
12.set.pop() 随机移除一个元素
描述:随机移除一个元素
语法:set.pop()
参数:无
返回值:返回移除的元素
set1 = {'python', 'java' , 'php' , 'html'}
print(set1.pop())
-----------------------------------------------
'java'
1、如果集合的元素都是数字, 删除时, 删掉的是最小的数字, 其余数字升序排列
2、如果集合的元素是非数字, 删除时, 删掉的是随机的元素, 其余元素随机排列
3、如果集合里既有数字又有非数字元素, 删除时:
若删掉的是数字, 则一定是删掉了最小的, 其他数字升序排列, 非数字元素随机排列;
若删掉的非数字, 则一定是随机删掉了一个, 其他数字升序排列, 非数字则随机排列.
13.set.remove(item) 移除指定元素,移除元素不存在时会报错
描述: 移除指定元素,
语法:set.remove(item)
参数:item -- 要移除的元素
返回值:无
set1 = {'python', 'java' , 'php' , 'html'}
set1.remove('java')
print(set1)
-----------------------------------------------
{'python', 'php' , 'html'}
14.set1.symmetric_difference(set2) 返回两个集合中不重复元素组成的一个新集合(对称差集)等同于set1 ^ set2
描述:返回两个集合中不重复元素组成的一个新集合
语法:set1.symmetric_difference(set2)
参数:set2 -- 要比较查找的集合
返回值:set1 与 set2 不重复元素组成的集合
set1 = {'python', 'java' , 'php' , 'html'}
set2 = {'python', 'C++' , 'C#' , 'css'}
print(set1.symmetric_difference(set2))
-----------------------------------------------
{'C#', 'html', 'php', 'css', 'java', 'C++'}
15.set1.symmetric_difference_update(set2) 将set1中与set2相同的部分删掉,并将set2中不同的部分添加到set1中
描述:将set1中与set2相同的部分删掉,并将set2中不同的部分添加到set1中
语法:set1.symmetric_difference_update(set2)
参数:set2 -- 要比较查找的集合
返回值:无
set1 = {'python', 'java' , 'php' , 'html'}
set2 = {'python', 'C++' , 'C#' , 'css'}
set1.symmetric_difference_update(set2)
print(set1)
-----------------------------------------------
{'C#', 'html', 'php', 'css', 'java', 'C++'}
16.set.union(set1, set2...) 求集合set与其它集合的并集
描述:求集合set与其它集合的并集
语法:set.union(set1, set2...)
参数:set1 --必需,合并的目标集合
set2 -- 可选,其它要合并的集合,可以多个,多个使用,隔开
返回值:返回一个新集合
set1 = {'python', 'java' , 'php' , 'html'}
set2 = {'python', 'C++' , 'C#' , 'css'}
print(set1.union(set2))
-----------------------------------------------
{'html', 'python', 'C++', 'php', 'java', 'css', 'C#'}
17.set1.update(set2) 添加新的元素或集合到set1中
描述:添加新的元素或集合到set1中
语法:set1.update(set2)
参数:set2 -- 必需,可以是元素或集合
返回值:无
set1 = {'python', 'java' , 'php' , 'html'}
set2 = {'python', 'C++' , 'C#' , 'css'}
set1.union(set2)
aTuple = (2,)
set1.union(aTuple)
print(set1)
-----------------------------------------------
{'python', 'php', 'C++', 'C#', 'css', 'java', 'html'}
{2, 'python', 'php', 'C++', 'C#', 'css', 'java', 'html'}

浙公网安备 33010602011771号