mysq集合差操作_Python 基础(集合)

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

集合的定义

使用set()定义集合

>>> st = set('hello world')   
#创建一个唯一字符的集合
>>> st
{' ', 'd', 'e', 'h', 'l', 'o', 'r', 'w'}
>>> type(st)
>>> set

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

直接使用 { } 来定义

>>> st = {'关注', '点赞', '转发', ('在看', ('公众号', '数据STUDIO'))}
>>> st
{'关注', '点赞', '转发', ('在看', ('公众号', '数据STUDIO'))}

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

集合对象的一些方法

两种增加方法

方法说明
set.add(elmnt)增加一个新元素到集合里,elmnt要添加的元素。
set.updata(set)把set中元素更新到原集合中,set可以是一个列表,一个元组,一个集合,如果是一个字典则增加的是键,这个过程自动去重。

set.add()添加元素

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

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

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

set.update()添加元素

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

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

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

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

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

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

三个删除方法

方法说明
set.remove(item)item -- 要移除的元素,删除集合中的指定元素
set.pop()随机的删除一个元素,并且返回这个删除的元素s
set.clear()清空整个集合,剩下一个空集合

set.remove()

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

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

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

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

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

set.pop()

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

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

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

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

set.celar()

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

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

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

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

集合的一些简单运算

in包含运算

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

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

>>> '点赞' in st
True

求交集

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

>>> 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)

>>> 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更新set1set1.update(set2)

推荐阅读

04c40d3c8e9e430b21d6898a9ca69735.png

-- 数据STUDIO -- 

2242b8d7fde0c4edf4e2596ed270f518.gif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值