文章目录
Python内置函数/方法详解—集合set
集合(set)是一个无序的不重复元素序列。
1、构造集合
可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 **{ }**,因为 { } 是用来创建一个空字典。
1、使用大括号
{}
basket ={'apple','orange','apple','pear','orange','banana'}print(basket)# {'apple', 'orange', 'banana', 'pear'}
当使用
print()函数
打印输出时,会自动将集合中重复的元素去除,且每次打印返回的顺序并不和初始的一致。
2、使用
set()
函数
fruit =set(("apple","banana","cherry"))# 请留意这个双括号print(fruit)# {'banana', 'apple', 'cherry'}
在使用
set()函数
创建集合时,一定要注意双括号。
2、基本计算
经过上述学习,我们已经知道如何创建集合。而两个集合之间的计算有4种,分别是
-
、
|
、
&
和
^
。
先创建两个集合,方便下面对其进行运算。
a =set('abcdefg')
b =set('abg')
2.1 -
print(a - b)# {'e', 'd', 'f', 'c'}
a - b 表示:集合 a 中包含而集合 b 中不包含的元素
2.2 |
print(a | b)# {'d', 'b', 'e', 'c', 'g', 'f', 'a'}
a | b 表示:集合 a 或集合 b 中包含的所有元素
2.3 &
print(a & b)# {'a', 'b', 'g'}
a & b 表示:集合 a 和集合 b 都包含了的元素
2.4 ^
print(a ^ b)# {'e', 'c', 'd', 'f'}
a ^ b 表示:不同时包含集合 a 和集合 b 的元素
3、访问项目
我们无法通过引用索引来访问 set 中的项目,因为 set 是无序的,项目没有索引。
但是可以使用 for 循环遍历 set 项目,或者使用 in 关键字查询集合中是否存在指定值。
实例
遍历集合,并打印值:
fruit ={'apple','banana','cherry'}for key in fruit:print(key)
检查 set 中是否存在 “banana”
fruit ={'apple','banana','cherry'}print('banana'in fruit)
若输出
True
,则表示指定值存在于该集合中;若输出
False
,则表示指定值不存在于该集合中。
4、内置函数
4.1 打印输出 print()
1、
print()
函数
从上述构造集合中,我们可以得知 print() 的作用就是打印输出小括号() 里的内容或值。
4.2 计算集合内元素 len()
2、
len()
函数
当我们想要获取集合 set 的长度,即确定集合中有多少项,就要使用 len() 方法。
print(len(basket))# 4print(len(fruit))# 3
我们注意到,在上述构造集合 basket 和 fruit 时,在 {} 中填入6个元素,当我们使用len()函数定长时,会发现其自动去除重复的元素,再返回。
4.3 返回变量类型 type()
3、
type()
函数
print(type(basket))# <class 'set'>
当我们使用 {} 或 set() 构造好集合时,对其使用 type() 函数,会输出
set
,则表明这是一个集合。
4.4 删除集合 del
4、
del
函数
我们已经构造好 basket 和 fruit 这两个集合,如果需要对其删除则使用del函数。
fruit =set(("apple","banana","cherry"))# 请留意这个双括号del fruit
print(fruit)# NameError: name 'fruit' is not defined.
注意:使用完del()函数删除集合后,如再用print()函数打印时,会报错
NameError: name 'fruit' is not defined.
,意为fruit未被定义,说明已删除。
5、内置方法
5.1 添加元素 add()、updata()
1、
add()
方法
add() 方法用于给集合添加元素,如果添加的元素在集合中已存在,则不执行任何操作。
语法
set.add(element)
参数值
参数描述element必需。要添加到集合的元素。
实例
向 fruits 集合添加一个元素:
fruits ={"apple","banana","cherry"}
fruits.add("orange")print(fruits)
输出结果:
{'apple','banana','orange','cherry'}
如果该元素已存在,则 add() 方法就不会添加元素。
fruits ={"apple","banana","cherry"}
fruits.add("apple")print(fruits)
输出结果:
{'apple','banana','cherry'}
2、
updata()
方法
update() 方法用于修改当前集合,可以添加新的元素或集合到当前集合中,如果添加的元素在集合中已存在,则该元素只会出现一次,重复的会忽略。
语法
set.update(set)
参数值
参数描述set必需。插入当前集合的集合。
实例
合并两个集合,重复元素只会出现一次:
x ={"apple","banana","cherry"}
y ={"google","runoob","apple"}
x.update(y)print(x)
输出结果:
{'banana','apple','google','runoob','cherry'}
5.2 移除元素 remove()、discard()、pop()
1、
remove()
方法
remove() 方法用于移除集合中的指定元素。
该方法不同于 discard() 方法,因为 remove() 方法在移除一个不存在的元素时会发生错误,而 discard() 方法不会。
语法
set.remove(item)
参数值
参数描述item必需。需要检索并删除的项目。
实例
移除元素 banana:
fruits ={"apple","banana","cherry"}
fruits.remove("banana")print(fruits)
输出结果:
{'cherry','apple'}
2、
discard()
方法
discard() 方法用于移除指定的集合元素。
该方法不同于 remove() 方法,因为 remove() 方法在移除一个不存在的元素时会发生错误,而 discard() 方法不会。
语法
set.discard(value)
参数值
参数描述value必需。要检索并删除的项目。
实例
移除集合中的元素 banana:
fruits ={"apple","banana","cherry"}
fruits.discard("banana")print(fruits)
输出结果:
{'cherry','apple'}
3、
pop()
方法
pop() 方法用于随机移除一个元素。
语法
set.pop()
参数值
无参数值。
实例
随机移除一个元素:
fruits ={"apple","banana","cherry"}
fruits.pop()print(fruits)
输出结果:
{'apple','banana'}
使用pop()方法删除项目,但此方法将删除最后一项。
同时请记住,集合set是无序的,因此您也不知道被删除的是什么项目。
5.3 清空集合 clear()
1、
clear()
方法
clear() 方法用于移除集合中的所有元素。
语法
set.clear()
参数值
无参数。
实例
移除 fruits 集合中的所有元素:
fruits ={"apple","banana","cherry"}
fruits.clear()print(fruits)
输出结果:
set()
特别注意:clear() 功能是移除集合中所有元素,而del 功能是删除集合。
所以,当对一个集合使用clear()方法或del函数,并分别对其使用print()函数打印输出时,前者会返回一个空的集合即
set()
,而后者会报错即
NameError: name 'fruit' is not defined.
clear() 从内存删除集合与清空集合,但内存地址不删除,del() 则会从内存中删除。
5.4 合并集合 union()、update()
在Python中,有几种方法可以连接两个或多个集合。
可以使用 union() 方法返回包含两个集合中所有项目的新集合,也可以使用 update() 方法将一个集合中的所有项目插入另一个集合中。
1、
union()
方法
union() 方法返回两个集合的并集,即包含了所有集合的元素,重复的元素只会出现一次。
语法
set.union(set1, set2 ...)
参数值
参数描述set1必需。要整合的集合。set2可选。要整合的另一集合。您能够比较任意多的集合。集合由逗号分隔。
实例
合并两个集合,重复元素只会出现一次:
set1 ={'a','b','c'}
set2 ={1,2,3,'c'}print(set1.union(set2))
输出结果:
{1,2,'b',3,'c','a'}
合并多个集合:
set1 ={'a','b','c'}
set2 ={1,2,3}
set3 ={'A','B'}print(set1.union(set2, set3))
输出结果:
{1,2,3,'B','b','A','a','c'}
2、
update()
方法
update() 方法在前面已经讲解过,在此仅作实例演示。
实例
update() 方法将 set2 中的项目插入 set1 中:
set1 ={'a','b','c'}
set2 ={1,2,3}
set1.update(set2)print(set1)
输出结果:
{1,2,3,'b','a','c'}
注释:
- union() 和 update() 都将排除任何重复项。
- 还有其他方法将两个集合连接起来,并且仅保留重复项,或者永远不保留重复项。
5.5 拷贝集合 copy()
copy()
方法用于拷贝一个集合。
语法
set.copy()
参数值
无参数。
实例
复制 fruits 集合:
fruits ={"apple","banana","cherry"}print(fruits.copy())
输出结果:
{'apple','banana','cherry'}
5.6 判断是否包含相同元素 isdisjoint()
isdisjoint()
方法用于判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。
语法
set.isdisjoint(set)
参数值
参数描述set必需。要在其中检索相同项目的集合。
实例
判断集合 y 中是否有包含 集合 x 的元素:
x ={'a','b','c'}
y ={'x','y','z'}print(x.isdisjoint(y))
输出结果:
True
注意:isdisjoint() 方法在判断两个集合是否包含相同元素时,如果不包含相同的元素则返回True,而包含相同的元素则返回False
5.7 返回交集 intersection()、intersection_update()
1、
intersection()
方法
intersection() 方法用于返回两个或更多集合中都包含的元素,即交集。
语法
set.intersection(set1, set2 ... etc)
参数值
参数描述set1必需。要在其中检索相同项目的集合。set2可选。其他需要在其中检索相同项目的集合。您可以比较任意多的集合。集合之间由逗号分隔。
实例
返回一个新集合,该集合的元素既包含在集合 x 又包含在集合 y 中:
x ={'a','b','c'}
y ={'x','y','z','c'}print(x.intersection(y))
输出结果:
{'c'}
计算多个集合的交集:
x ={'a','b','c'}
y ={'x','y','z','c'}
z ={'c','a','d'}print(x.intersection(y, z))
输出结果:
{'c'}
返回的集合仅包含两个集合中都存在的项目,或者如果使用两个以上的集合进行比较,则在所有集合中都存在。
2、
intersection_update()
方法
intersection_update() 方法用于获取两个或更多集合中都重叠的元素,即计算交集。
语法
set.intersection_update(set1, set2 ... etc)
参数值
参数描述set1必需。要在其中检索相等项目的集合。set2可选。要在其中检索相等项目的另一集合。您能够比较任意多的集合。集合由逗号分隔。
实例
移除 x 集合中不存在于 y 集合中的元素:
x ={'a','b','c'}# y 集合不包含 a,被移除
y ={'x','y','b','c'}
x.intersection_update(y)print(x)
输出结果:
{'b','c'}
计算多个集合的并集:
x ={'a','b','c'}
y ={'c','d','e'}
z ={'f','g','c'}
x.intersection_update(y, z)print(x)
输出结果:
{'c'}
intersection_update() 方法不同于 intersection() 方法,因为 intersection() 方法是返回一个新的集合,而 intersection_update() 方法是在原始的集合上移除不重叠的元素。
5.8 判断子集 issubset() 、issuperset()
1、
issubset()
方法
issubset() 方法用于判断集合的所有元素是否都包含在指定集合中,如果是则返回 True,否则返回 False。
语法
set.issubset(set)
参数值
参数描述set必需。在其中检索相等项目的集合。
实例
如果集合 y 中存在集合 x 中的所有项目,则返回 True:
x ={'a','b','c'}
y ={'x','y','z','a','b','c'}print(x.issubset(y))
输出结果:
True
如果没有全部包含返回 False:
x ={'a','b','c'}
y ={'x','y','z','a'}print(x.issubset(y))
输出结果:
False
注意:使用
x.issubset(y)
时,简单地说,当集合 x 中所有项目都存在于集合 y 中时,返回True,反之(集合 x 中有一个或多个都不存在于集合 y 中,就返回 False)。
2、
issuperset()
方法
issuperset() 方法用于判断指定集合的所有元素是否都包含在原始的集合中,如果是则返回 True,否则返回 False。
语法
set.issuperset(set)
参数值
参数描述set必需。要在其中检索相等项目的集合。
实例
判断集合 y 的所有元素是否都包含在集合 x 中:
x ={'a','b','c','x','y','z'}
y ={'a','b','c'}print(x.issuperset(y))
输出结果:
True
如果没有全部包含返回 False:
x ={'a','x','y','z'}
y ={'a','b','c'}print(x.issuperset(y))
输出结果:
False
issuperset() 和 issubset() 类似,如果全都包含就返回True,反之(有一个或多个未包含)就返回False。
5.9 差集 difference() 、difference_update()
1、
difference()
方法
difference() 方法用于返回集合的差集,即返回的集合元素包含在第一个集合中,但不包含在第二个集合(方法的参数)中。
语法
set.difference(set)
参数值
参数描述set必需。要检查其中差异的项目。
实例
返回一个集合,元素包含在集合 x ,但不在集合 y :
x ={'a','b','c','x','y','z'}
y ={'a','b','c'}print(x.difference(y))
输出结果:
{'x','y','z'}
2、
difference_update()
方法
difference_update() 方法用于移除两个集合中都存在的元素。
语法
set.difference_update(set)
参数值
参数描述set必需。要检查其中差异的集合。
实例
移除两个集合都包含的元素:
x ={'a','b','c','x','y','z'}
y ={'a','b','c'}
x.difference_update(y)print(x)
输出结果:
{'x','z','y'}
difference_update() 方法与 difference() 方法的区别在于 difference() 方法返回一个移除相同元素的新集合,而 difference_update() 方法是直接在原来的集合中移除元素,没有返回值。
5.10 移除元素 symmetric_difference()、symmetric_difference_update()
1、
symmetric_difference()
方法
symmetric_difference() 方法返回两个集合中不重复的元素集合,即会移除两个集合中都存在的元素。
语法
set.symmetric_difference(set)
参数值
参数描述set必需。用于检查匹配项的集合。
实例
返回两个集合组成的新集合,但会移除两个集合的重复元素:
x ={'a','b','c','x','y','z'}
y ={'a','b','c','Q','W','E'}print(x.symmetric_difference(y))
输出结果:
{'x','Q','z','E','y','W'}
2、
symmetric_difference_update()
方法
symmetric_difference_update() 方法移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。
语法
set.symmetric_difference_update(set)
参数值
参数描述set必需。用于检查匹配项的集合。
实例
在原始集合 x 中移除与 y 集合中的重复元素,并将不重复的元素插入到集合 x 中:
x ={'a','b','c','x','y','z'}
y ={'a','b','c','Q','W','E'}
x.symmetric_difference_update(y)print(x)
输出结果:
{'z','Q','x','W','E','y'}
6、 总结
函数描述print()打印输出len()计算集合内元素type()返回变量类型del删除集合方法描述add()为集合添加元素update()给集合添加元素remove()移除指定元素discard()删除集合中指定的元素pop()随机移除元素clear()移除集合中的所有元素union()返回两个集合的并集copy()拷贝一个集合isdisjoint()判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 Falseintersection()返回集合的交集intersection_update()返回集合的交集issubset()判断指定集合是否为该方法参数集合的子集issuperset()判断该方法的参数集合是否为指定集合的子集difference()返回多个集合的差集difference_update()移除集合中的元素,该元素在指定的集合也存在symmetric_difference()返回两个集合中不重复的元素集合。symmetric_difference_update()移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中
以上就是本文的全部内容啦!如果对您有帮助,麻烦点赞啦!收藏啦!欢迎各位评论区留言!!!
最后编辑于:2022/7/23 15:43
版权归原作者 LeoATLiang 所有, 如有侵权,请联系我们删除。