Python小知识-序列数据结构之集合set(四)

这篇文章讲的是Python的集合set类型

set集合简介

集合是一个无序的(类似无序的还有字典),不重复的数据集合。其基本功能包括下面两种:

  • 去重:把一个还有重复元素的列表或元组等数据类型转变成集合,其中的重复元素只出现一次。使用set()方法。
  • 进行关系测试:测试两组数据之间的交集,差集,并集等数据关系。

1. 创建集合set——去重

可以使用大括号{}或者set()函数创建集合。注意:创建一个空集合必须用set()而不是{ },因为{ }是用来创建一个空字典

student ={ 'Jack', 'Jim', 'Mary', 'Tom', 'Tom', 'Rose'}
print( student)  #输出集合,重复的元素被自动去掉

以上实例输出结果为:

{ 'Jack', 'Rose', 'Mary', 'Jim', 'Tom'}

2.集合运算

2.1 交集

两个集合 A 和 B 的交集是含有所有既属于 A 又属于 B 的元素,而没有其他元素的集合。使用 & 操作符执行交集操作,也可使用方法 intersection()

a = set('12345')
b = set('45678')
print(a&b)
print(a.intersection(b))

结果:

{‘4’, ‘5’}
{‘4’, ‘5’}

2.2 差集

A 与 B 的差集是所有属于 A 且不属于 B 的元素构成的集合。使用操作符 - 执行差集操作,同样地,也可使用方法 difference() 完成。

a = set('12345')
b = set('45678')
print(a-b)
print(a.difference(b))

结果:

{‘2’, ‘3’, ‘1’}
{‘2’, ‘3’, ‘1’}

2.3 并集

一组集合的并集是这些集合的所有元素构成的集合,而不包含其他元素。使用操作符 | 执行并集操作,同样地,也可使用方法 union() 完成。

a = set('12345')
b = set('45678')
print(a|b)
print(a.union(b))

结果:

{‘8’, ‘7’, ‘3’, ‘5’, ‘2’, ‘1’, ‘4’, ‘6’}
{‘8’, ‘7’, ‘3’, ‘5’, ‘2’, ‘1’, ‘4’, ‘6’}

2.4对差集

两个集合的对称差是只属于其中一个集合,而不属于另一个集合的元素组成的集合。使用 ^ 操作符执行差集操作,同样地,也可使用方法 symmetric_difference() 完成。

a = set('12345')
b = set('45678')
print(a^b)
print(a.symmetric_difference(b))

结果:

{‘2’, ‘8’, ‘1’, ‘3’, ‘7’, ‘6’}
{‘2’, ‘8’, ‘1’, ‘3’, ‘7’, ‘6’}

3. 集合内置函数和方法

函数 描述
all() 内置函数:如果集合中的所有元素都是 True(或者集合为空),则返回 True。
any() 内置函数:如果集合中的所有元素都是 True,则返回 True;如果集合为空,则返回 False。
enumerate() 内置函数:返回一个枚举对象,其中包含了集合中所有元素的索引和值(配对)。
len() 内置函数:返回集合的长度(元素个数)
max() 内置函数:返回集合中的最大项
min() 内置函数:返回集合中的最小项
sorted() 内置函数:从集合中的元素返回新的排序列表(不排序集合本身)
sum() 内置函数:返回集合的所有元素之和
add() 向集合中添加元素
clear 清空集合
pop 删除并返回任意的集合元素(如果集合为空,会引发 KeyError)
remove 删除并返回任意的集合元素(如果集合为空,会引发 KeyError)
intersection 将两个集合的交集作为一个新集合返回
union 将集合的并集作为一个新集合返回
difference 将两个或多个集合的差集作为一个新集合返回
symmetric_difference 将两个集合的对称差作为一个新集合返回(两个集合合并删除相同部分,其余保留)
update 用自己和另一个的并集来更新这个集合
isdisjoint() 如果两个集合有一个空交集,返回 True
issubset() 如果另一个集合包含这个集合,返回 True
issuperset() 如果这个集合包含另一个集合,返回 True

猜你喜欢

转载自blog.csdn.net/weixin_42555080/article/details/86232099
今日推荐