集合主要知识集锦
集合:
集合定义:可以包含多个元素,用逗号分割。
集合的元素遵循三个原则:
1.每个元素必须是不可变类型
2.没有重复的元素
3.它是无序的
举例:
s={1,2,2,'eaaa',(1,2,3)} print(s,type(s))
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
{1, 2, 'eaaa', (1, 2, 3)} <class 'set'>
显示出来的结果具有去重性,
优先掌握:
1. in not in
pythons={'alex','egon','yuanhao','wupeiqi','gangdan','biubiu'} print('egon' in pythons)
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
True
2.并集
pythons={'alex','egon','yuanhao','wupeiqi','gangdan','biubiu'} linuxs={'wupeiqi','oldboy','gangdan'}
s=pythons | linuxs
print(s)
print(pythons.union(linuxs))
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
{'yuanhao', 'wupeiqi', 'biubiu', 'egon', 'oldboy', 'gangdan', 'alex'} {'yuanhao', 'wupeiqi', 'biubiu', 'egon', 'oldboy', 'gangdan', 'alex'}
2.交集
pythons={'alex','egon','yuanhao','wupeiqi','gangdan','biubiu'} linuxs={'wupeiqi','oldboy','gangdan'} s=pythons & linuxs print(s) print(pythons.intersection(linuxs)) print(linuxs.intersection(pythons))
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
{'wupeiqi', 'gangdan'} {'wupeiqi', 'gangdan'} {'wupeiqi', 'gangdan'}
3差集.
就是说只报名python,没有报名linux的学生
pythons={'alex','egon','yuanhao','wupeiqi','gangdan','biubiu'} linuxs={'wupeiqi','oldboy','gangdan'} print(pythons - linuxs) print(pythons.difference(linuxs)) print(linuxs.difference(pythons)) print(linuxs - pythons)
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
{'alex', 'egon', 'yuanhao', 'biubiu'} {'alex', 'egon', 'yuanhao', 'biubiu'} {'oldboy'} {'oldboy'}
4.对称差集
pythons={'alex','egon','yuanhao','wupeiqi','gangdan','biubiu'} linuxs={'wupeiqi','oldboy','gangdan'} print(pythons ^ linuxs) print(pythons.symmetric_difference(linuxs)) print(linuxs.symmetric_difference(pythons))
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
{'alex', 'egon', 'biubiu', 'oldboy', 'yuanhao'} {'alex', 'egon', 'biubiu', 'oldboy', 'yuanhao'} {'biubiu', 'yuanhao', 'alex', 'egon', 'oldboy'}
5.子集,父集
set1={1,2,3,4,5} set2={1,2,3,4} print(set1 >= set2) print(set1.issuperset(set2)) print(set2 <= set1) print(set2.issubset(set1))
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
True
True
True
True
掌握部分
1、update()
描述:扩展集合
参数:要添加的集合
返回值:None(原集合会被修改)
举例
s1 = {'william','lisa','knight','pudding'} s2 = {'sky'} s3 = s1.update(s2) # 扩展集合s1 print(type(s3),s3) # 查看返回值 print(type(s1),s1) # 打印扩展后的集合s1
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
<class 'NoneType'> None <class 'set'> {'knight', 'sky', 'pudding', 'lisa', 'william'}
2、copy()
描述:复制集合
参数:无
返回值:返回一个和原集合一样的新的集合
1 s1 = {'william','lisa','knight','pudding'} 2 s2 = s1.copy() # 对集合s1进行复制 3 print(type(s1),s1) 4 print(type(s2),s2)
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
<class 'set'> {'knight', 'pudding', 'william', 'lisa'} <class 'set'> {'knight', 'pudding', 'william', 'lisa'}
3、pop()
描述:随机删除集合中的一个元素
参数:无
返回值:返回被删除的元素
1 s1 = {'william','lisa','knight','pudding'} 2 s2 = s1.pop() # 随机删除集合中的一个元素 3 print(type(s1),s1) 4 print(type(s2),s2)
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
<class 'set'> {'lisa', 'knight', 'william'} <class 'str'> pudding
4、clear()
描述:清空字典
参数:无
返回值:None(原集合会被修改)
1 s1 = {'william','lisa','knight','pudding'} 2 s2 = s1.clear() # 清空集合 3 print(type(s1),s1) 4 print(type(s2),s2)
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
<class 'set'> set() <class 'NoneType'> None
5、remove()
描述:删除集合中指定的元素
参数:element 元素
返回值:None(原集合会被修改)
s1 = {'william','lisa','knight','pudding'} s2 = s1.remove('lisa') print(type(s1),s1) print(type(s2),s2) # 返回值为空
6、add()
描述:为集合增加元素
参数:element 元素
返回值:None(原集合会被修改)
1 s1 = {'william','lisa','knight','pudding'} 2 s2 = s1.add('sky') 3 print(type(s1),s1) 4 print(type(s2),s2) # 返回值为空
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
<class 'set'> {'pudding', 'lisa', 'william', 'knight', 'sky'} <class 'NoneType'> None
7、discard()
描述:删除集合中指定的元素
参数:element 元素
返回值:None(原集合会被修改)
1 s1 = {'william','lisa','knight','pudding'} 2 s2 = s1.discard('william') 3 print(type(s2),s2) 4 print(type(s1),s1)
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
<class 'NoneType'> None <class 'set'> {'lisa', 'knight', 'pudding'}
7、difference()
描述:差集运算,原集合不更新
参数:set 要对比的集合
返回值:得到一个差集
s1
=
{
'william'
,
'lisa'
,
'knight'
,
'pudding'
}
s2
=
{
'sky'
,
'william'
,
'hello'
,
'knight'
}
s3
=
s1.difference(s2)
print
(
type
(s3),s3)
# 得到一个差集。
print
(
type
(s1),s1)
# 原集合不更新
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
<class 'NoneType'> None <class 'set'> {'pudding', 'lisa'}
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
<class 'set'> {'lisa', 'pudding'} <class 'set'> {'pudding', 'lisa', 'knight', 'william'}
8、difference_update
描述:差集运算,原集合更新
参数:set 要对比的集合
返回值:None(原集合会被修改)
s1
=
{
'william'
,
'lisa'
,
'knight'
,
'pudding'
}
s2
=
{
'sky'
,
'william'
,
'hello'
,
'knight'
}
s3
=
s1.difference_update(s2)
print
(
type
(s3),s3)
# 返回None
print
(
type
(s1),s1)
# 原集被更新
python3集合方法统计
1、update()
- 官方说明:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
描述:扩展集合
参数:要添加的集合
返回值:None(原集合会被修改)
- 示例:
1
2
3
4
5
|
s1 = { 'william' , 'lisa' , 'knight' , 'pudding' } s2 = { 'sky' } s3 = s1.update(s2) # 扩展集合s1 print ( type (s3),s3) # 查看返回值 print ( type (s1),s1) # 打印扩展后的集合s1 |
输出结果:
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
<class 'NoneType'> None <class 'set'> {'knight', 'sky', 'pudding', 'lisa', 'william'}
2、copy()
- 官方说明:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
描述:复制集合
参数:无
返回值:返回一个和原集合一样的新的集合
- 示例:
1
2
3
4
|
s1 = { 'william' , 'lisa' , 'knight' , 'pudding' } s2 = s1.copy() # 对集合s1进行复制 print ( type (s1),s1) print ( type (s2),s2) |
输出结果:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
3、pop()
- 官方说明:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
描述:随机删除集合中的一个元素
参数:无
返回值:返回被删除的元素
- 示例:
1
2
3
4
|
s1 = { 'william' , 'lisa' , 'knight' , 'pudding' } s2 = s1.pop() # 随机删除集合中的一个元素 print ( type (s1),s1) print ( type (s2),s2) |
输出结果:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
4、clear()
- 官方说明:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
描述:清空字典
参数:无
返回值:None(原集合会被修改)
示例:
1
2
3
4
|
s1 = { 'william' , 'lisa' , 'knight' , 'pudding' } s2 = s1.clear() # 清空集合 print ( type (s1),s1) print ( type (s2),s2) |
输出结果:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
5、remove()
- 官方说明:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
描述:删除集合中指定的元素
参数:element 元素
返回值:None(原集合会被修改)
- 示例:
1
2
3
4
|
s1 = { 'william' , 'lisa' , 'knight' , 'pudding' } s2 = s1.remove( 'lisa' ) print ( type (s1),s1) print ( type (s2),s2) # 返回值为空 |
输出结果:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
6、add()
- 官方说明:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
描述:为集合增加元素
参数:element 元素
返回值:None(原集合会被修改)
- 示例:
1
2
3
4
|
s1 = { 'william' , 'lisa' , 'knight' , 'pudding' } s2 = s1.add( 'sky' ) print ( type (s1),s1) print ( type (s2),s2) # 返回值为空 |
输出结果:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
7、difference()
- 官方说明:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
描述:差集运算,原集合不更新
参数:set 要对比的集合
返回值:得到一个差集
- 示例:
1
2
3
4
5
|
s1 = { 'william' , 'lisa' , 'knight' , 'pudding' } s2 = { 'sky' , 'william' , 'hello' , 'knight' } s3 = s1.difference(s2) print ( type (s3),s3) # 得到一个差集。 print ( type (s1),s1) # 原集合不更新 |
输出结果:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
8、difference_update
- 官方说明:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
描述:差集运算,原集合更新
参数:set 要对比的集合
返回值:None(原集合会被修改)
- 示例:
1
2
3
4
5
|
s1 = { 'william' , 'lisa' , 'knight' , 'pudding' } s2 = { 'sky' , 'william' , 'hello' , 'knight' } s3 = s1.difference_update(s2) print ( type (s3),s3) # 返回None print ( type (s1),s1) # 原集被更新 |
输出结果:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
9、discard()
- 官方说明:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
描述:删除集合中指定的元素
参数:element 元素
返回值:None(原集合会被修改)
- 示例:
1
2
3
4
|
s1 = { 'william' , 'lisa' , 'knight' , 'pudding' } s2 = s1.discard( 'william' ) print ( type (s2),s2) print ( type (s1),s1) |
输出结果:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
10、intersection()
- 官方说明:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
描述:交集运算,原集合不更新
参数:set 要对比的集合
返回值:得到一个交集
- 示例:
1
2
3
4
5
|
s1 = { 'william' , 'lisa' , 'knight' , 'pudding' } s2 = { 'william' , 'xxxx' } s3 = s1.intersection(s2) print ( type (s3),s3) # 得到一个交集 print ( type (s1),s1) # 原集合不更新 |
输出结果:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
11、intersection_update()
- 官方说明:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
描述:交集运算,原集合更新
参数:set 要对比的集合
返回值:None(原集合会被修改)
- 示例:
1
2
3
4
5
|
s1 = { 'william' , 'lisa' , 'knight' , 'pudding' } s2 = { 'william' , 'xxxx' } s3 = s1.intersection_update(s2) print ( type (s3),s3) # 返回None print ( type (s1),s1) # 原集合更新 |
输出集合:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
12、isdisjoint()
- 官方说明:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
描述:判断是否有交集,如果有交集则返回False,没有返回True
参数:set 要对比的集合
返回值:返回一个布尔值
- 示例:
1
2
3
4
5
6
7
8
9
|
s1 = { 'william' , 'lisa' , 'knight' , 'pudding' } s2 = { 'xxxx' , 'lisa' } s3 = s1.isdisjoint(s2) # 有交集则返回False print ( type (s3),s3) #-------------------------------------------- s4 = { 'william' , 'lisa' , 'knight' , 'pudding' } s5 = { 'xxxx' , 'yyyyy' , 'kkkkkk' , 'uuuuuu' } s6 = s4.isdisjoint(s5) # 没有交集则返回True print ( type (s6),s6) |
输出结果:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
13、issubset()
- 官方说明:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
描述:判断原集合是否是要对比的集合的子集,如果是则返回True,否则返回False
参数:set 要对比的集合
返回值:得到一个布尔值
- 示例:
1
2
3
4
5
6
7
8
9
|
s1 = { 'william' , 'pudding' } s2 = { 'william' , 'lisa' , 'knight' , 'pudding' } s3 = s1.issubset(s2) # s1是否是s2的子集,所以返回True print ( type (s3),s3) #-------------------------------------- s4 = { 'william' , 'xxxxx' } s5 = { 'william' , 'lisa' , 'knight' , 'pudding' } s6 = s4.issubset(s5) # s4不是s5的子集,所以返回False print ( type (s6),s6) |
输出结果:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
14、issuperset()
- 官方说明:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
描述:判断原集合是否是要对比的集合的超(父)集,如果是则返回True,否则返回False
参数:set 要对比的集合
返回值:得到一个布尔值
- 示例:
1
2
3
4
5
6
7
8
9
|
s1 = { 'william' , 'lisa' , 'knight' , 'pudding' } s2 = { 'william' , 'pudding' } s3 = s1.issuperset(s2) # s1是s2的超(父)集,所以返回True print ( type (s3),s3) #-------------------------------------- s4 = { 'william' , 'xxxxx' } s5 = { 'william' , 'lisa' , 'nnnnn' , 'xxxx' } s6 = s4.issuperset(s5) # s4不是s5的超(父)集,所以返回False print ( type (s6),s6) |
输出结果:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
15、symmetric_difference()
- 官方说明:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
描述:对称差集运算,原集合不更新
参数:set 要对比的集合
返回值:返回一个对称差集
- 示例:
1
2
3
4
5
|
s1 = { 'william' , 'lisa' , 'knight' , 'pudding' } s2 = { 'william' , 'pudding' , 'xxxxxx' } s3 = s1.symmetric_difference(s2) print ( type (s3),s3) # 得到一个对称差集 print ( type (s1),s1) # 对称差集运算,原集合不更新 |
输出结果:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
16、symmetric_difference_update()
- 官方说明:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
描述:对称差集运算,原集合更新
参数:set 要对比的集合
返回值:None(原集合会被修改)
- 示例:
1
2
3
4
5
|
s1 = { 'william' , 'lisa' , 'knight' , 'pudding' } s2 = { 'william' , 'pudding' , 'xxxxxx' } s3 = s1.symmetric_difference_update(s2) print ( type (s3),s3) # 返回None print ( type (s1),s1) # 对称差集运算,原集合更新 |
输出结果:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
17、union()
- 官方说明:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
描述:并集运算,原集合不更新
参数:set 要对比的集合
返回值:得到一个新的集合,两个集合中都有的元素都合并成一个。
- 示例:
1
2
3
4
5
|
s1 = { 'william' , 'lisa' , 'knight' , 'pudding' } s2 = { 'william' , 'pudding' , 'xxxxxx' } s3 = s1.union(s2) print ( type (s3),s3) # 返回得到一个新的集合,两个集合中都有的元素都合并成一个。 print ( type (s1),s1) # 并集运算,原集合不更新 |
输出结果:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)