挑战 30 天学完 Python:Day7 数据类型 - 集合 setpy
📘 Day 7
🎉 本系列为 Python 基础学习,原稿来源于英文项目,大奇主要是对其本地化翻译、逐条验证和补充。此系列适合零基础同学,或仅了解 Python 一点知识,但又没有系统学习的使用者。总之如果你想提升自己的 Python 技能,欢迎加入《挑战 30 天学完 Python》
作者:大奇 MegaQi | Info 签约作者 ,专注测试开发技术实战干货分享,欢迎访问主页长期关注。
集合 Set
Set 是项的合集。让我带你回到小学或者高中的数学课,集合的数学定义可以应用在 python 上。Set 是无序且没有索引的集合。在 Python 中,集合用于存储唯一项,可以在集合之间查找并集、交集、差集、对称差集、子集、超集和不相交集。
百度百科概念:集合是指具有某种特定性质的具体的或抽象的对象汇总而成的集体。其中,构成集合的这些对象则称为该集合的元素。详细请搜索词条。
创建 set
我们使用花括号 { }
来创建一个 set 或 set()
内置函数。
创建一个空的 set
创建一个带初始值的 set
获取长度
我们使用 len()
方法来获取 Set 的长度。
访问和检索
我们使用循环来访问项。具体将在循环部分看到如何使用。而对于检查一项是否在 set 中我们使用操作符 in
项添加
Set 一旦被创建,内部的项是不可以改变的。但是我们可以向其添加新项。
添加一个项使用 add()
使用 update() 添加多个项,函数参数是一个 list。
移删清空
remove
我们可以使用 remove()
方法将 set 中某项进行移除。 其中如果移除的项不存在则会抛出一个错误,因此在做此操作前做好检查下项是否存在 set 中。不过我嗯可以使用 discard()
方法来进行同样操作但不会引起错误。
还有一种 pop() 方法,它的作用是移除一个随机的项,并且返回移除项。
clear
如果想清空或清除 set 集合,我们使用 clear()
方法。
del
如果我们想彻底删除 set 本身,我们使用 del
操作关键词。
list 转 set
我们可以在 list 和 set 之间相互转换。将 list 转 set 的时候会移除重复项,仅有唯一值将被保留。
连接 set
我们如果想将两个 set 组合在一起,可以使用 union() 或 update() 方法。
union 方法将两个 set 连接并返回一个新的 set
update 方法是将参数中 set 插入给定的 set 中
交集/差集
方法
intersection()
返回两个集合中的相同项的集合。
使用方法
difference()
它返回两个集合之间的差值。
检查子集/超集
集合可以是其他集合的子集或超集:
子集:
issubset()
超集:
issuperset()
对称差集合
方法 symmetric_difference()
返回两个 set 之间的对称差。它意味着返回一个集合,其中包含两个集合中的所有项,然后除去两个都存在项,数学上对照:(A\B) ∪ (B\A)
这里请特别对照 difference()弄清楚差和对称差的不同。
检查是否相同元素
如果两个集合没有一个或多个共同项,我们称它们为不相交集。我们可以使用 isdisjoint()
方法检查两个集合是连接的还是不连接的。或者可理解为用于判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。
实战操作例子
🌕 坚持到现在的你,就像一个冉冉升起的新星。你刚刚完成了第 7 天的挑战,你在通往伟大的道路上领先了 7 步。按照以往惯例,让我们来做一些练习,巩固下知识点。
💻 第 7 天练习
练习 1 级
输出集合 it_companies 的长度
添加 'Twitter' 到 it_companies
一次添加多个公司到 it_companies
从 it_companies 移除一家公司
在移除 set 项操作中 remove 和 difference 方法有什么不同?
练习 2 级
连接 A 和 B
找出 A intersection(交集) B
判断 A 是否是 B 子集
判断 A 和 B 是否有相同元素(disjoint)
实现 A join B 和 B join A
在 A 和 B 的对称差
完全的删除掉上边使用的过的集合
练习 3 级
将年龄 list 转成 set,并比较两者长度,哪个更大?
解释以下数据类型的区别:字符串 str、列表 list、元组 tuple 和集合 set
有这样一个语句 " I am a teacher and I love to inspire and teach people "。 使用字符串 split 和 set 得到唯一的单词集合。
🎉 CONGRATULATIONS ! 🎉
github 项目(含参考答案)地址:https://github.com/QiCodeCN/30-Days-Of-Python-zh_CN
如喜欢通过“点赞👍收藏❤️关注➕”鼓励作者大奇
文章中如有错误或疑问欢迎指正和交流。
版权声明: 本文为 InfoQ 作者【MegaQi】的原创文章。
原文链接:【http://xie.infoq.cn/article/63058b03675deea0743a9a9de】。文章转载请联系作者。
评论