0


Python 集合set详解(超详细)

文章目录

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


本文转载自: https://blog.csdn.net/m0_70885101/article/details/125948550
版权归原作者 LeoATLiang 所有, 如有侵权,请联系我们删除。

“Python 集合set详解(超详细)”的评论:

还没有评论