11、基本数据类型---集合

认识集合

集合是一个数学概念:由一个或多个确定的元素所构成的整体叫做集合。

集合中的元素有三个特征:

1.确定性(元素必须可hash)

2.互异性(去重)

3.无序性(集合中的元素没有先后之分),如集合{3,4,5}和{3,5,4}算作同一个集合。

注意:集合存在的意义就在于去重和关系运算

 

>>> s = {1,2,3,2,4,5}#创建集合
>>> s
{1, 2, 3, 4, 5}#只有一个2
>>> s.add(2)#添加重复的2也加不进去
>>> s
{1, 2, 3, 4, 5}
>>> s.add(44)
>>> s
{1, 2, 3, 4, 5, 44}
>>> s.update([2,3,4,5,5,99])#把多个值加入到集合
>>> s
{1, 2, 3, 4, 5, 99, 44}
>>> s.discard(1)#删除元素,没有也不报错
>>> s
{2, 3, 4, 5, 99, 44}
>>> s.pop()#随便删除一个元素,集合为空的话会报错
2
>>> s.pop()
3
>>> s
{4, 5, 99, 44}
>>> s.clear()#清空
>>> s
set()
>>> s.add(1)
>>> s.copy()
{1}
>>> s.add([1,2,3])#只能添加不可变数据
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'

 

交集

iphone7 = {'alex','rain','jack','old_driver'}
iphone9 = {'alex','jack','shanshan','old_boy'}


>>> iphone7.intersection(iphone9) {'alex', 'jack'} >>> iphone7&iphone9 {'alex', 'jack'}

 

差集

iphone7 = {'alex','rain','jack','old_driver'}
iphone9 = {'alex','jack','shanshan','old_boy'}

>>> iphone7.difference(iphone9) {'rain', 'old_driver'} >>> iphone7-iphone9 {'rain', 'old_driver'} >>> iphone9.difference(iphone7) {'old_boy', 'shanshan'} >>> iphone9-iphone7 {'old_boy', 'shanshan'}

 

并集

iphone7 = {'alex','rain','jack','old_driver'}
iphone9 = {'alex','jack','shanshan','old_boy'}

>>> iphone9.union(iphone7) {'shanshan', 'old_boy', 'rain', 'jack', 'alex', 'old_driver'} >>> iphone9|iphone7 {'shanshan', 'old_boy', 'rain', 'jack', 'alex', 'old_driver'}

 

对称差集

iphone7 = {'alex','rain','jack','old_driver'}
iphone9 = {'alex','jack','shanshan','old_boy'}

>>> iphone9.symmetric_difference(iphone7)
{'shanshan', 'rain', 'old_boy', 'old_driver'}
>>> iphone9^iphone7
{'shanshan', 'rain', 'old_boy', 'old_driver'}

  

包含关系

in not in :判断某元素是否在集合内 ==  != :判断两个集合是否相等

两个集合之间一般有三个关系,相交、包含、不相交。在Python中分别用下面方法判断

set.isdisjiont(s):判断两个集合是不是相交

set.issuperset(s):判断集合是不是包含其他集合,等同于a>=b

set.issubset(s):判断集合是不是被其他集合包含,等同于a<=b

 

转载于:https://www.cnblogs.com/vettel2018/p/10024607.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值