Python 集合相关操作

栏目: Python · 发布时间: 7年前

内容简介:Python 集合相关操作

集合相关操作

集合是一个无序的,不重复的数据组合,它有着两个主要作用:去重以及关系测试。去重指的是当把一个列表变成了集合,其中重复的内容就自动的被去掉了

关系测试指的是,测试两组数据之间的交集、差集、并集等关系。

去重测试代码如下:

# 创建一个列表 -- 里面存在一些重复值
test_list = [1,2,3,4,2,2,3,4,3,2,3,4]

# 利用集合将列表中重复的内容去掉
test_list = set(test_list)

# 打印测试并且查看test_list 被赋予新值后的数据类型
print(test_list,type(test_list))   #  {1, 2, 3, 4} <class 'set'> 

Tip:需要注意的是,集合和字典一样都是无序的。

获取交集需要使用集合中的方法intersection方法,获取两个集合中的交集代码如下:

# 创建两个集合,并且获取集合的交集
test_list_01 = set(['YanYan','LiBai','LuLu','YangMi'])
test_list_02 = set(['YanYan','LiuDeHua','ZhangXueYou','LiBai'])


# 在上面的两个集合中,存在相同的值,那么现在我们取出两个集合中的交集
test_intersection = test_list_01.intersection(test_list_02)
print(test_intersection)  # {'YanYan', 'LiBai'} 

获取并集的方式需要采用集合中union方法,获取两个集合的并集代码如下:

# 创建两个集合,并且获取集合的交集
test_list_01 = set(['YanYan','LiBai','LuLu','YangMi'])
test_list_02 = set(['YanYan','LiuDeHua','ZhangXueYou','LiBai'])

# 采用集合中的union方法获取并集
test_list_union = test_list_01.union(test_list_02)
print(test_list_union)  # {'LiBai', 'LuLu', 'ZhangXueYou', 'LiuDeHua', 'YangMi', 'YanYan'} 

获取差集的方式要采用集合中的difference方法,获取两个集合的差集的代码如下所示:

# 创建两个集合,并且获取集合的交集
test_list_01 = set(['YanYan','LiBai','LuLu','YangMi'])
test_list_02 = set(['YanYan','LiuDeHua','ZhangXueYou','LiBai'])

# 使用集合中的difference 方法来获取差集
test_difference = test_list_01.difference(test_list_02)
test_difference2 = test_list_02.difference(test_list_01)


print(test_difference) # {'LuLu', 'YangMi'}
print(test_difference2) # {'ZhangXueYou', 'LiuDeHua'} 

判断一个集合是否是另外一个集合的子集可以使用issubset()方法,同样,还可以使用issuperset()方法判断一个集合是否是另外一个集合的父级

代码如下:

# 创建两个集合

list_set  = set([1,2,3,4])

list_son = set([2,3])

# 判断list_son是否是list_set的子集
print(list_son.issubset(list_set))  # True
# 判断list_set 是否是list_son的父级
print(list_set.issuperset(list_son)) # True 

对称差集(又有人称之为叫做反向差集),指的是取出两个集合中互相都没有的值取出放在一个集合中。

代码如下:

# 创建两个集合

list_set_num1 = set([1,3,5,7,9])
list_set_num2 = set([2,3,4,6,9,10])

# 获取两个集合的对称差集
print(list_set_num1.symmetric_difference(list_set_num2))  # {1, 2, 4, 5, 6, 7, 10} 

如果上述的难以理解的话,可以对 对称差集理解为去掉两个集合中都存在的内容,将剩余的内容取到一个新的集合中。

除了上述的这些方法实现的关系功能之外,还有一个方法 isdisjoint() ,功能是判断两个集合中是否有相同的值,如果两个集合中没有相同的值(即没有交集),那么返回True

代码如下:

# 创建集合
test_set_num1 = set([1,2,3,4])
test_set_num2 = set([5,6,7,8])
test_set_num3 = set([1,3,7,8])

# 使用isdisjoint()方法来判断
print(test_set_num1.isdisjoint(test_set_num2)) # True
print(test_set_num1.isdisjoint(test_set_num3)) # False 

通过运算符来进行关系测试

在上面的应用中,主要是通过 python 中的方法进行的关系测试,那么在python中,除了使用方法以外,还可以使用关系运算符来进行关系测试。

实例代码如下:

test_list_01 = set(['YanYan','LiBai','LuLu','YangMi'])
test_list_02 = set(['YanYan','LiuDeHua','ZhangXueYou','LiBai'])


# 获取交集 &
print(test_list_01 & test_list_02) # {'LiBai', 'YanYan'}

# 获取并集 |
print(test_list_01 | test_list_02) # {'LuLu', 'LiBai', 'LiuDeHua', 'YanYan', 'ZhangXueYou', 'YangMi'}

# 获取差集  -
print(test_list_01 - test_list_02) # {'LuLu', 'YangMi'}
print(test_list_02 - test_list_01) # {'LiuDeHua', 'ZhangXueYou'}

# 获取对称差集
print(test_list_01 ^ test_list_02) # {'ZhangXueYou', 'YangMi', 'LuLu', 'LiuDeHua'} 

集合的增删改查

添加

语法: Set.add()

代码如下:

# 创建一个集合
test_set = set(['YanYan'])

# 添加
test_set.add('LiBai') # 添加一项
test_set.update(['LuLu','JingJing']) # 一次性向集合中添加多项


# 输出集合
print(test_set) # {'YanYan', 'LuLu', 'LiBai', 'JingJing'} 

删除

删除集合中的某一个元素可以使用remove方法

代码如下:

# 创建一个集合
test_set = set(['YanYan'])

# 使用remove方法删除元素
test_set.remove('YanYan')
print(test_set)  # set() 

删除项目除了使用remove以外,还可以使用pop()方法,但是pop()方法删除内容不能够指定,只是随机删除。

pop方法会把删除的内容返回,示例代码如下:

# 创建一个集合
test_set = set([20,9,'a',1,2,3,4])
print(test_set.pop()) # 1
print(test_set.pop()) # 2
print(test_set.pop()) # 3

删除元素还可以使用discard()方法,这个方法没有返回值,如果打印返回值的话会输出None

# 创建一个集合
test_list = set([1,2,3,4,5])

# 使用discard()方法删除 -- 注意,discard()方法删除返回None,也就是没有返回值
print(test_list.discard(3))  # None
# 此时原集合中的3已经被删除了
print(test_list)  # {1, 2, 4, 5}

查询

x in s # 判断 x是否是s 的成员
x not in s  判断x 是否是s的成员

len(x) # 查看x的长度
s <= t # 测试是否s中的每一个元素都在t中
s >= t # 测试是否 t 中的每一个元素都在 s 中  

本文永久更新链接地址 http://www.linuxidc.com/Linux/2017-06/144463.htm


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Numerical Methods and Methods of Approximation in Science and En

Numerical Methods and Methods of Approximation in Science and En

Karan Surana / CRC Press / 2018-10-31

ABOUT THIS BOOK Numerical Methods and Methods of Approximation in Science and Engineering prepares students and other readers for advanced studies involving applied numerical and computational anal......一起来看看 《Numerical Methods and Methods of Approximation in Science and En》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具