Python中的集合

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

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

一、什么是集合?

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

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

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

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

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

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

二、集合的定义和实例

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

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

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

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

1 语法

set(object)

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

2 实例

实例1—(object为字符串)

set('阿黎逸阳')

得到结果:

{'逸', '阳', '阿', '黎'}

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

实例2—(object为元组)

set((1,1,2))

得到结果:

{1, 2}

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

实例3—(object为列表)

set(['好','好','学','习','天','天','向','上'])

得到结果:

{'上', '习', '向', '天', '好', '学'}

实例4—(object为字典)

set({'a':'1','b':'2','b':3})

得到结果:

{'a', 'b'}

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

三、集合的特点

特点1 不能通过索引访问

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

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

a = set([1, '希望','明天','会','更好',1])
for i in a:
    print(i)

得到结果:

明天
1
会
希望
更好

四、集合的更新

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

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

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

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

b = {1,'c'}b.add(3)

得到结果:

{1, 3, 'c'}

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

b = {1,'c'}
b.add('aaa')

得到结果:

{1, 3, 'aaa', 'c'}

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

c= set([1, '希望','明天','会','更好',1])
c.remove(1)

得到结果:

{'会', '希望', '明天', '更好'}

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

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

c= set([1, '希望','明天','会','更好',1])
c.update('a')

得到结果:

{1, 'a', '会', '希望', '明天', '更好'}

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

b = {1, 3, 5, 'aaa', 'c'}
c = {'会', '希望', '明天', '更好'}
b.update(c)

得到结果:

{1, 3, 5, 'aaa', 'c', '会', '希望', '明天', '更好'}

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

b = {1, 3, 5, 'aaa', 'c', '会', '希望', '明天', '更好'}
c = {'会', '希望', '明天', '更好'}b -= c  #等价于b = b - c

得到结果:

{1, 3, 5, 'aaa', 'c'}

五、集合的运算

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

1 两个集合求并集

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

得到结果:

{'你', '健康', '安康', '希望', '幸福', '开心', '快乐', '我'}

2 两个集合求交集

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

得到结果:

{'你', '希望', '快乐', '我'}

3 两个集合求差集

set1 = {'我','希望','你','幸福','快乐','安康'}
set2 = {'我','希望','你','开心','快乐','健康'}
set5 = set1 - set2  #set1中的元素去除set2中有的元素

得到结果:

{'安康', '幸福'}

4 两个集合求差分

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

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

set1 = {'我','希望','你','幸福','快乐','安康'}
set2 = {'我','希望','你','开心','快乐','健康'}
set6 = set1^set2

得到结果:

{'健康', '安康', '幸福', '开心'}

六、总结

  • 1.Python中集合存储的元素无序且不能重复。
  • 2.Python中集合分为可变集合(用set和{}创建)和不可变集合(用frozenset创建)。可变集合可以添加或删除元素,不可变集合不能被修改。
  • 3.Python中集合不能通过索引访问,可以通过for循环调用集合中的元素。
  • 4.Python中集合可以通过add(添加一个集合成员)、remove(删除一个集合成员)、update(添加一个或多个集合成员)等方法对集合进行更新。
  • 5.Python中集合可以求并集、交集、差集、差分等运算。

本文分享自微信公众号 - 阿黎逸阳的代码(gh_f3910c467dfe),作者:阿黎逸阳

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-05-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 用Python中的py2neo库调用neo4j,搭建简单关联图谱

    我第一次建立关联图谱用的是R语言,通过写代码帮公安挖掘团伙犯罪,并用图形展示团伙之间的关联关系。

    阿黎逸阳
  • Python人脸识别—我的眼里只有你

    人脸识别总感觉特别高深,但是因为Python中已经有很多前辈写好了一些库,可以直接调用,大大降低了人脸识别的难度。

    阿黎逸阳
  • 手把手教你用neo4j搭建简单关联图谱(基于家有儿女中的人物关系)

    我第一次建立关联图谱用的是R语言,通过写代码帮公安挖掘团伙犯罪,并用图形展示团伙之间的关联关系。

    阿黎逸阳
  • [ Java学习基础 ] Java的对象容器 -- 集合

    Kevin_Zhang
  • 《闲扯Redis九》Redis五种数据类型之Set型

    Redis 中的 Set 是我们经常使用到的一种数据类型,根据使用方式的不同,可以应用到很多场景中。

    大道七哥
  • List<E>集合接口特征、ArrayList与LinkedList使用注意及特征

  • 爬虫 (十七) 你懂集合? (九)

    最重要的一点就是如果您觉得对您有帮助,希望可以点个在看,或者点一点文章中最下面的广告,给小编我加个鸡腿,毕竟小编写文章也是很辛苦的,非常感谢

    公众号---志学Python
  • 4.93Python数据类型之(8)集合

    py3study
  • 码农眼中的数学之~数学基础

    1维直线、2维平面(长宽)、3维空间(长宽高 | xyz轴)、4维时空(xyz轴+时间轴)

    逸鹏
  • Python_实用入门篇_12

    具有某种特定性质的事物的总体,集合里的东西叫作元素。Python中,集合(set)是一个无序不重复元素的序列。

    py3study

扫码关注云+社区

领取腾讯云代金券