Python系列:集合的使用(1)

举报
数据分析与统计学之美 发表于 2021/09/27 21:24:59 2021/09/27
2.3k+ 0 0
【摘要】 python系列第七课

今天就带着大家开始我们——Python学习的第二课,Python数据类型之集合的介绍。
在这里插入图片描述
市面上讲述集合知识的文章较少,这里黄同学给大家做一个详细的总结,前方高能,赶紧上车哦。

1. 集合的作用

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

2. 集合的特征

① 集合使用 set 表示;
② 集合也使用{ }表示, 与字典不同的是: 字典中存储的是键值对,集合中存储的是单一的元素;
③ 注意 1: x = { }表示的是空字典,不表示集合;
④ 注意 2: x = set()可以创建空集合;
⑤ 集合中不含有重复元素,集合自动过滤重复元素;

>>> x = {1,2,3,1,2,3}
>>> len(x)
3
>>> x
{1, 2, 3}

⑥ 集合中的元素----无序性
⑦ 集合中元素类型,必须是可哈希类型-----------------不懂;

  • 一个对象在其生命周期内,如果保持不变,就是 hashable(可哈希的),像 tuple和 string 是可哈希的, list、 set和 dictionary 都是不可哈希的。
>>> x = {[1,2,3],4}
Traceback (most recent call last):
	File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'
>>> y = [(1,2,3),4]
>>> y
[(1, 2, 3), 4]55

⑧ 集合的底层,就是以字典中的 key 来实现的, 集合中的元素就会成为字典的key,然后绑定一个固定的值, 因此,集合与字典具有很大的相似性;

  • 在集合中: x = {1,2,3}
  • 在字典中: x = {1:None, 2:None, 3:None}

3. 集合比较运算

3.1 ==:两个集合中元素是否一致

>>> s = {1,2,3,4,5}
>>> t = {4,5,6,7}
>>> u = {1,2,3,4,5}
>>> s == t
False
>>> s == u
True

3.2 >、 >=、 < 、 <=:父集、子集比较

>>> s = {1,2,3,4,5}
>>> t = {4,5,6,7}
>>> u = {1,2,3}
>>> s > t
False
>>> s > u
True
>>> u < t
False
>>> u < s
True

注: 若 A > B,则 A 是 B 的父集, A 是 B 的子集;

3.3 is、 is not:比较两个集合是否是同一个对象

>>> s = {1,2,3}
>>> t = s.copy()
>>> t
{1, 2, 3}
>>> s == t
True
>>> s is t
False

4. 集合推导式:可以自动去重

>>> s = {i for i in range(10)}
>>> s
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
>>> t = {i for i in [1,2,3,4,2,3]}
>>> t
{1, 2, 3, 4}

5. 集合运算

这里可能会涉及到部分函数,如果现在不懂,不着急,我们将在后面为大家一一说明。

5.1 in: 判断某个元素是否在集合中,是返回 True,否返回 False

>>> s = {1,2,3,4}
>>> 2 in s
True
>>> 6 in s
False

5.2 &:返回两个元素的交集,相当于 s.intersection(t)

>>> s = {1,2,3,4,5}
>>> t = {4,5,6,7}
>>> s & t
{4, 5}
>>> s
{1, 2, 3, 4, 5}

5.3 |:返回两个元素的并集,相当于 s.union(t)

>>> s = {1,2,3,4,5}
>>> t = {4,5,6,7}
>>> s | t
{1, 2, 3, 4, 5, 6, 7}

5.4 -:返回两个元素的差集, 相当于 s.difference(t)

>>> s = {1,2,3,4,5}
>>> t = {4,5,6,7}
>>> s - t
{1, 2, 3}

5.5 ^:返回两个元素的对称差集, 相当于 s.symmetric_difference(t)

>>> s = {1,2,3,4,5}
>>> t = {4,5,6,7}
>>> s ^ t
{1, 2, 3, 6, 7}
【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。