前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python中的集合

Python中的集合

作者头像
阿黎逸阳
发布2020-09-08 11:10:22
9690
发布2020-09-08 11:10:22
举报

初学Python时,有很多定义都比较模糊,不是特别理解,导致一到使用就卡壳。

本文致力用最简洁的语言、最清晰的例子,跟你一起理解Python中的集合函数。

一、什么是集合?

高中的时候我们就学过集合,Python中的集合与之概念类似,又有不同。

Python中的集合专门用于存储信息,存储的元素无序不能重复,它用一对花括号{}定义,数据之间用逗号隔开。

Python中有两种不同的类型的集合:可变集合不可变集合

可变集合可以添加或删除元素,但可变集合存储的元素不能被哈希,因此不能用做字典的键。

不可变集合不能添加或删除元素,集合存储的元素元素可以被哈希,因此可以用做字典的键。

Python中集合之间也可以求并集、交集、差集、差分等运算。

二、集合的定义和实例

Python中用set和{}创建的集合是可变集合,用frozenset创建的是不可变集合

不可变集合不可以增加、删除集合中的元素,即集合内容不可变。这类似于字符串和元组,如果试图改变,Python会报错。

不可变集合除了内容不能更改外,其他功能及操作和可变集合一样。

不可变集合有一个非常有用的实例,会专门写一篇文章进行介绍。接下来重点介绍可变集合。

1 语法

代码语言:javascript
复制
set(object)

其中object可以是字符串,元组,列表,字典等对象。

2 实例

实例1—(object为字符串)

代码语言:javascript
复制
set('阿黎逸阳')

得到结果:

代码语言:javascript
复制
{'逸', '阳', '阿', '黎'}

:从实例1知,集合是无序的,把字符串拆成了一个一个的元素分别存储。

实例2—(object为元组)

代码语言:javascript
复制
set((1,1,2))

得到结果:

代码语言:javascript
复制
{1, 2}

:从实例2知,集合中的元素不能重复,可以用集合去重。

实例3—(object为列表)

代码语言:javascript
复制
set(['好','好','学','习','天','天','向','上'])

得到结果:

代码语言:javascript
复制
{'上', '习', '向', '天', '好', '学'}

实例4—(object为字典)

代码语言:javascript
复制
set({'a':'1','b':'2','b':3})

得到结果:

代码语言:javascript
复制
{'a', 'b'}

:从实例4知,当object是字典时,取出的是字典的键作为集合的值。

三、集合的特点

特点1 不能通过索引访问

集合是无序的,故不能通过索引访问。

特点2 可以通过for循环调用集合中的元素

代码语言:javascript
复制
a = set([1, '希望','明天','会','更好',1])
for i in a:
    print(i)

得到结果:

代码语言:javascript
复制
明天
1
会
希望
更好

四、集合的更新

对于可变集合,可以用内置的add方法添加一个成员、remove方法删除一个成员、update方法添加一个或多个成员。操作符“-=”用于删除集合中的子集合。

1 用add方法添加一个集合成员

add方法可以添加一个集合成员,添加的对象可以是单个元素,也可以是单个字符串。但是不能是元组或列表等对象,即使元组或列表里的元素只有一个也会报错。

实例1—(添加单个数字)

代码语言:javascript
复制
b = {1,'c'}b.add(3)

得到结果:

代码语言:javascript
复制
{1, 3, 'c'}

实例2—(添加一个字符串)

代码语言:javascript
复制
b = {1,'c'}
b.add('aaa')

得到结果:

代码语言:javascript
复制
{1, 3, 'aaa', 'c'}

2 用remove方法删除一个集合成员

代码语言:javascript
复制
c= set([1, '希望','明天','会','更好',1])
c.remove(1)

得到结果:

代码语言:javascript
复制
{'会', '希望', '明天', '更好'}

3 用update方法添加一个或多个集合成员

实例1—(添加一个成员)

代码语言:javascript
复制
c= set([1, '希望','明天','会','更好',1])
c.update('a')

得到结果:

代码语言:javascript
复制
{1, 'a', '会', '希望', '明天', '更好'}

实例2—(添加多个成员)

代码语言:javascript
复制
b = {1, 3, 5, 'aaa', 'c'}
c = {'会', '希望', '明天', '更好'}
b.update(c)

得到结果:

代码语言:javascript
复制
{1, 3, 5, 'aaa', 'c', '会', '希望', '明天', '更好'}

4 用“-=”方法删除集合中的子集合

代码语言:javascript
复制
b = {1, 3, 5, 'aaa', 'c', '会', '希望', '明天', '更好'}
c = {'会', '希望', '明天', '更好'}b -= c  #等价于b = b - c

得到结果:

代码语言:javascript
复制
{1, 3, 5, 'aaa', 'c'}

五、集合的运算

Python中集合之间也可以求并集、交集、差集、差分等运算。

1 两个集合求并集

代码语言:javascript
复制
set1 = {'我','希望','你','幸福','快乐','安康'}
set2 = {'我','希望','你','开心','快乐','健康'}
set3 = set1 | set2  #两个集合中的元素合并去重

得到结果:

代码语言:javascript
复制
{'你', '健康', '安康', '希望', '幸福', '开心', '快乐', '我'}

2 两个集合求交集

代码语言:javascript
复制
set1 = {'我','希望','你','幸福','快乐','安康'}
set2 = {'我','希望','你','开心','快乐','健康'}
set4 = set1 & set2  #两个集合中都有的元素

得到结果:

代码语言:javascript
复制
{'你', '希望', '快乐', '我'}

3 两个集合求差集

代码语言:javascript
复制
set1 = {'我','希望','你','幸福','快乐','安康'}
set2 = {'我','希望','你','开心','快乐','健康'}
set5 = set1 - set2  #set1中的元素去除set2中有的元素

得到结果:

代码语言:javascript
复制
{'安康', '幸福'}

4 两个集合求差分

集合的差分运算又叫对称差运算,是集合的异或运算。使用符号‘^’或函数symmetric_difference可以执行集合的差分运算。

在Python语言中,由不同时属于集合set1和set2的成员组成新的集合,叫集合的差分运算。

代码语言:javascript
复制
set1 = {'我','希望','你','幸福','快乐','安康'}
set2 = {'我','希望','你','开心','快乐','健康'}
set6 = set1^set2

得到结果:

代码语言:javascript
复制
{'健康', '安康', '幸福', '开心'}

六、总结

  • 1.Python中集合存储的元素无序且不能重复。
  • 2.Python中集合分为可变集合(用set和{}创建)和不可变集合(用frozenset创建)。可变集合可以添加或删除元素,不可变集合不能被修改。
  • 3.Python中集合不能通过索引访问,可以通过for循环调用集合中的元素。
  • 4.Python中集合可以通过add(添加一个集合成员)、remove(删除一个集合成员)、update(添加一个或多个集合成员)等方法对集合进行更新。
  • 5.Python中集合可以求并集、交集、差集、差分等运算。
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-05-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 阿黎逸阳的代码 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档