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
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值