python3 第十五章 - 数据类型之Sets(集合)

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

内容简介:python3 第十五章 - 数据类型之Sets(集合)

python的官网里对集合的描述是:

Python also includes a data type for sets . A set is an unordered collection with no duplicate elements. Basic uses include membership testing and eliminating duplicate entries. Set objects also support mathematical operations like union, intersection, difference, and symmetric difference.

Python还包括用于集合的数据类型。集合是没有重复元素的无序容器。基本用法包括成员资格测试和消除重复条目。集合对象也支持数学运算,如并,交,差和对称差。

特点:

  • 集合是一个无序的,不重复的数据组合
  • 把一个列表变成集合,就自动去重了
  • 关系测试,测试两组数据之前的交集、差集、并集等关系

1、创建

用花括号或者 set() 函数可以用来创建集合。注意,你必须使用 set() 创建一个空的集合,而不能用 {} ,后面这种写法创建一个空的字典

实例:

basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}  # 用花括号的方式创建一个集合

set2 = set('abracadabra')  # 用set()的方式创建一个集合

set3 = set()  # 创建一个空的集合

print(basket)

以上代码,输出:

{'banana', 'orange', 'apple', 'pear'}

细心对照一下,你会发现,自动去除了重复,值得一提的是 显示的顺序并不表示Sets是有序的

2、添加元素

通过add(key)方法可以添加元素到set中,可以重复添加,但不会有效果:

basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}  # 用花括号的方式创建一个集合
print('原来的basket:', basket)

basket.add('apple')  # 添加一个重复的
print('添加一个重复项后:', basket)

basket.add('watermelon')  # 添加一个不重复的
print('添加一个不重复项后:', basket)

以上代码,输出:

原来的basket: {'apple', 'banana', 'pear', 'orange'}
添加一个重复项后: {'apple', 'banana', 'pear', 'orange'}
添加一个不重复项后: {'banana', 'apple', 'watermelon', 'orange', 'pear'}

3、删除元素

可通过remove(key)方法可以删除元素:

basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}  # 用花括号的方式创建一个集合
print('原来的basket:', basket)

basket.remove('apple')  # 删除 'apple'
print('删除 \'apple\':', basket)

以上代码,输出:

原来的basket: {'apple', 'pear', 'banana', 'orange'}
删除 'apple': {'pear', 'banana', 'orange'}

set和dict的唯一区别仅在于没有存储对应的value,但是,set的原理和dict一样,所以,同样不可以放入可变对象,因为无法判断两个可变对象是否相等,也就无法保证set内部“不会有重复元素”。 试试把list放入set,看看是否会报错

set可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集、并集等操作,我们通过实例来演示:

A = {'apple', 'orange',  'pear',  'banana'}  # 用花括号的方式创建一个集合
B = {'apple', 'orange',  'watermelon'}
C = {'apple', 'orange'}
D = {'c++', 'python'}

print('集合A:', A)
print('集合B:', B)

print('A、B的交集:', A.intersection(B))  # 交集
print('A、B的并集:', A.union(B))  # 并集
print('A、B的差集:', A.difference(B))  # 差集 (项在A中,但不在B中)
print('A、B的对称差集:', A.symmetric_difference(B))  # 对称差集(项在A或B中,但不会同时出现在二者中)

# 子集(判断A是否包含了B里面的所有值)
print('B是A的子集?', B.issubset(A))
print('C是A的子集?', C.issubset(A))

# 父集(判断A是否为B的父集)
print('A是B的父集?', A.issuperset(B))
print('A是C的父集?', A.issuperset(C))

# 无交集(判断两个集合是否完全没有任何交集)
print('A与D是否有交集?', A.isdisjoint(D))
print('A与B是否有交集?', A.isdisjoint(B))

print()  # 输出空行
print()  # 输出空行
print('另一种写法')
print('集合A:', A)
print('集合B:', B)

#  另一种写法
print('A、B的交集 => A & B:', A & B)  # 交集
print('A、B的并集 => A | B:', A | B)  # 并集
print('A、B的差集 => A - B:', A - B)  # 差集(项在A中,但不在B中)
print('A、B的对称差集 => A ^ B:', A ^ B)  # 对称差集(项在A或B中,但不会同时出现在二者中)

以上代码,输出:

集合A: {'apple', 'orange', 'pear', 'banana'}
集合B: {'apple', 'orange', 'watermelon'}
A、B的交集: {'apple', 'orange'}
A、B的并集: {'apple', 'watermelon', 'pear', 'orange', 'banana'}
A、B的差集: {'pear', 'banana'}
A、B的对称差集: {'watermelon', 'pear', 'banana'}
B是A的子集? False
C是A的子集? True
A是B的父集? False
A是C的父集? True
A与D是否有交集? True
A与B是否有交集? False


另一种写法
集合A: {'apple', 'orange', 'pear', 'banana'}
集合B: {'apple', 'orange', 'watermelon'}
A、B的交集 => A & B: {'apple', 'orange'}
A、B的并集 => A | B: {'apple', 'watermelon', 'pear', 'orange', 'banana'}
A、B的差集 => A - B: {'pear', 'banana'}
A、B的对称差集 => A ^ B: {'watermelon', 'pear', 'banana'}

以上所述就是小编给大家介绍的《python3 第十五章 - 数据类型之Sets(集合)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

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

淘宝、天猫网上开店速查速用一本通

淘宝、天猫网上开店速查速用一本通

刘珂 / 北京时代华文书局 / 2015-6 / 39.8

为了帮助众多的新手卖家掌握淘宝天猫网上开店、货源准备、店铺装修、商品拍摄、交易方法、营销推广以及售后服务等知识,本书作者根据自己多年网上开店心得,并结合了多名淘宝五皇冠店主和天猫旗舰店卖家的经验,精心策划编写了本书。 《淘宝、天猫网上开店速查速用一本通:开店、装修、运营、推广完全攻略》将目前最前沿、最流行的营销理念运用到淘宝天猫网上平台,所有技术都在实际应用获得显著效果,并且还在持续创造着惊......一起来看看 《淘宝、天猫网上开店速查速用一本通》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

SHA 加密
SHA 加密

SHA 加密工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具