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

Python 基础(集合)

作者头像
数据STUDIO
发布2021-06-24 10:22:25
2420
发布2021-06-24 10:22:25
举报
文章被收录于专栏:数据STUDIO

  • 集合是一种可变数据类型
  • 集合一种无序不重复的集,所有集合的作用主要就是去重
  • 关系测试,测试两组数据之前的交集、差集、并集等关系
  • 集合中的元素必须要求不可变

集合的定义

使用set()定义集合

代码语言:javascript
复制
>>> st = set('hello world')   
#创建一个唯一字符的集合
>>> st
{' ', 'd', 'e', 'h', 'l', 'o', 'r', 'w'}
>>> type(st)
>>> set

>>> st = set(['关注', '点赞', '转发', '点赞', '点赞', '在看'])
>>> st
{'关注', '点赞', '转发', '在看'}

直接使用 { } 来定义

代码语言:javascript
复制
>>> st = {'关注', '点赞', '转发', ('在看', ('公众号', '数据STUDIO'))}
>>> st
{'关注', '点赞', '转发', ('在看', ('公众号', '数据STUDIO'))}

# 集合里面的元素必须是不可变数据类型, 和字典一样,不能出现任意可变数据类型
>>> st = {'关注', '点赞', '转发', ['在看', ('公众号', '数据STUDIO')]}
>>> st
----------------------------------------------------
TypeError            Traceback (most recent call last)
<ipython-input-35-2a70659a8621> in <module>
----> 1 st = {'关注', '点赞', '转发', ['在看', ('公众号', '数据STUDIO')]}
      2 st

TypeError: unhashable type: 'list'

集合对象的一些方法


两种增加方法

方法

说明

set.add(elmnt)

增加一个新元素到集合里,elmnt要添加的元素。

set.updata(set)

把set中元素更新到原集合中,set可以是一个列表,一个元组,一个集合,如果是一个字典则增加的是键,这个过程自动去重。

set.add()添加元素

可以通过add(新元素)方法添加元素到set中,但对于已经存在的值不会有效果。如果添加的元素在集合中已存在,则不执行任何操作。

代码语言:javascript
复制
>>> st = {'关注', '点赞', '转发', '在看'}
>>> st
{'关注', '点赞', '转发', '在看'}
>>> type(st)
set

>>> st.add('数据STUDIO')
>>> st
{'关注', '点赞', '转发', '在看', '数据STUDIO'}

set.update()添加元素

update()方法用于修改当前集合,可以添加新的元素或集合到当前集合中,如果添加的元素在集合中已存在,则该元素只会出现一次,重复的会忽略。

代码语言:javascript
复制
>>> st = {'关注', '点赞', '转发', '在看'}
>>> st
{'关注', '点赞', '转发', '在看'}
>>> type(st)
set

#把列表里面的元素增加到集合中,这个过程自动去重
>>> st.update(['数据STUDIO', '数据STUDIO', '公众号'])
>>> st
{'关注', '点赞', '转发', '在看', '数据STUDIO', '公众号'}

#把元组里面的元素增加到集合中,这个过程自动去重
>>> st.update(('《数据STUDIO》', '<数据STUDIO>', '数据STUDIO'))
>>> st
{'关注', '点赞', '转发', '在看',
 '数据STUDIO', '公众号', '《数据STUDIO》', '<数据STUDIO>'}

# 字典添加的是键
>>> st.update({1:'Python', 2:'机器学习'})
>>> st
{'关注', '点赞', '转发', '在看',
 '数据STUDIO', '公众号', '《数据STUDIO》', 
 '<数据STUDIO>', 1, 2}

# 集合里面的元素添加到集合里
>>> st.update({'Python', '机器学习'})
>>> st
{'关注', '点赞', '转发', '在看',
 '数据STUDIO', '公众号', '《数据STUDIO》', 
 '<数据STUDIO>', 1, 2, 'Python', '机器学习'}

三个删除方法

方法

说明

set.remove(item)

item -- 要移除的元素,删除集合中的指定元素

set.pop()

随机的删除一个元素,并且返回这个删除的元素s

set.clear()

清空整个集合,剩下一个空集合

set.remove()

remove()方法用于移除集合中的指定元素。

该方法不同于 discard() 方法,因为 remove() 方法在移除一个不存在的元素时会发生错误,而 discard() 方法不会。

代码语言:javascript
复制
>>> st = {'点赞', '转发', '在看', '未关注'}
>>> st
{'点赞', '转发', '在看', '未关注'}
>>> type(st)
set 

>>> st.remove('未关注')
>>> st
{'点赞', '转发', '在看'}

# 没有需要删除的元素则报错

set.pop()

随机删除一个元素并且返回这个元素。

代码语言:javascript
复制
>>> st = {'点赞', '转发', '在看', '关注'}
>>> st
{'点赞', '转发', '在看', '关注'}

>>> st.pop()
'点赞'

>>> st
{'转发', '在看', '关注'}

set.celar()

clear() 方法用于移除集合中的所有元素。

代码语言:javascript
复制
>>> st = {'点赞', '转发', '在看', '关注'}
>>> st
{'点赞', '转发', '在看', '关注'}

>>> st.clear()
>>> st
set()
# 此处空集合与空字典有所区别,需注意

>>> dic = {1:1, 2:2}
>>> dic.clear()
>>> dic
{}
>>> type(dic)
dict

集合的一些简单运算

in包含运算

判断元素是否是集合中的元素

代码语言:javascript
复制
>>> st = {'点赞', '转发', '在看', '关注'}
>>> st
{'点赞', '转发', '在看', '关注'}

>>> '点赞' in st
True

求交集

set1 & set2 <==> set1.intersection(set2)

代码语言:javascript
复制
>>> set1 = set([1, 2, 3, 4, 5, 6])
>>> set2 = set([1, 4, 6, 9, 10, 11, 12, 23])
>>> set1
{1, 2, 3, 4, 5, 6}
>>> set2
{1, 4, 6, 9, 10, 11, 12, 23}

>>> set1 & set2
{1, 4, 6}

>>> set1.intersection(set2)
{1, 4, 6}

>>> set2.intersection(set1)  # 都是等价的
{1, 4, 6}

并集

set1 | set2 <==> set1.union(set2)

代码语言:javascript
复制
>>> set1 = set([1, 2, 3, 4, 5, 6])
>>> set2 = set([1, 4, 6, 9, 10, 11, 12, 23])
>>> set1
{1, 2, 3, 4, 5, 6}
>>> set2
{1, 4, 6, 9, 10, 11, 12, 23}

>>> set1 | set2
{1, 2, 3, 4, 5, 6, 9, 10, 11, 12, 23}

>>> set1.union(set2)  # 和上面等价
{1, 2, 3, 4, 5, 6, 9, 10, 11, 12, 23}

其他相关操作

运算符

功能

对应方法

set1 & set2

交集

set1.intersection(set2)

set1 | set2

并集

set1.union(set2)

set1 - set2

差值

set1.difference(set2)

set1 ^ set2

对称差

set1.symmetric_difference(set2)

set1 <= set2

是否是set2的子集

set1.issubset(set2)

set1 >= set2

是否是set2的超集

set1.isuperset(set2)

set1 |= set2

用set2更新set1

set1.update(set2)

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-12-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据STUDIO 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 集合的定义
    • 使用set()定义集合
      • 直接使用 { } 来定义
        • 集合对象的一些方法
        • 两种增加方法
          • set.add()添加元素
            • set.update()添加元素
            • 三个删除方法
              • set.remove()
                • set.pop()
                  • set.celar()
                  • 集合的一些简单运算
                    • in包含运算
                      • 求交集
                        • 并集
                        • 其他相关操作
                        领券
                        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档