python集合操作方法_六、Python集合定义和基本操作方法

一、集合的定义方法及特点

1、特点:

(1)由不同元素组成

#集合由不同元素构成

s={1,2,3,3,4,3,3,}print(s)#运行结果:{1, 2, 3, 4}

(2)集合无序

#集合无序

s={'lilei','liuhua','alax','bob','bbb','bob'}print(s)#运行结果:{'bob', 'liuhua', 'bbb', 'alax', 'lilei'}

(3)集合只能存放数字、字符串和元祖(即不可变类型)

#集合只能存放不可变类型

s={'alax',12,[1,2],('bab')}#[1,2]为列表类型

print(s)

运行结果:

7c1457812d7177827e489ee38f5f0e7a.png

2、定义方式

类型一:s={ }

类型二:s=set( )

s=set('hel')print(s)#输出结果:{'h', 'l', 'e'}

二、集合的内置方法

1、.add( )     添加(不可添加相同元素)

#添加

s1={1,2,3}

s1.add('alax')print(s1)#输出结果:{1, 2, 3, 'alax'}

s2={1,2,3}

s2.add(3)print(s2)#输出结果:{1, 2, 3}

2、.clear( )   清空、.copy( )   拷贝

#清空、拷贝

s={1,2,3}

s1={'baba'}

s.clear()print(s)#输出结果:set()

s1.copy()print(s1)#输出结果:{'baba'}

3、删除 .pop( ) 随机删除  .remove( )指定删除——>元素不存在会报错   .discard( )指定删除——>元素不存在不会报错

#删除

s1={'ax',1,2,3}

s1.pop()print(s1)#运行结果:{1, 'ax', 2}

s2={'ax',1,2,3}

s2.remove('ax')print(s2)#运行结果:{1, 2, 3}#s2.remove('axxx')#print(s2)#不存在,运行结果报错

s3={'ax',1,2,3}

s3.discard('axxxx')print(s3)#运行结果:{1, 2, 3, 'ax'},不存在但是不报错

二、集合关系运算、交叉,并集

1、基本关系运算

现在我们举一个例子

例:现在有同学'bob','alax','zh'学习Python,有同学'bob','zh'学习Linux,用列表统计处即学习Python也学习Linux的同学名单。

解答:此题使用列表解决有三种写法,如下所示:

#列表举例

python_l=['bob','alax','zh']

linux_l=['zh','bob']##方法一:#for i in python_l:#for j in linux_l:#if i==j:#print(i)#运行结果:['bob', 'zh']

##方法二:#for name_l in python_l:#if name_l in linux_l:#print(name_l)#运行结果:['bob', 'zh']

#方法三:

python_l_and_linux_l=[]for name_l inpython_l:if name_l inlinux_l:

python_l_and_linux_l.append(name_l)print(python_l_and_linux_l)#运行结果:['bob', 'zh']

现在我们用集合来解决此类问题:

375a6f12eb71fa81301ad208fb54e666.png

如上图所示,求即学习Python_l和Linux_l的同学,即求交集部分

(1)交集,A.intersection(B) A与B的交集  或者 A&B

例题所示代码表示为:

python_l=['bob','alax','zh']

linux_l=['zh','bob']#——————转化为集合形式——————————

p_l=set(python_l)

l_l=set(linux_l)#——————求两个集合的交集————————

print(p_l.intersection(l_l))#运行结果:{'zh', 'bob'}

print(p_l&l_l)#运行结果:{'zh', 'bob'}

补充:交集更新A.intersection_updata(B)

(2)并集,A.union(B)  A与B的并集 或者A|B

#集合求并集

python_l=['bob','alax','zh']

linux_l=['zh','bob','hahah']#——————转化为集合形式——————————

p_l=set(python_l)

l_l=set(linux_l)#——————求两个集合的并集————————

print(p_l.union(l_l))#运行结果:{'alax', 'hahah', 'zh', 'bob'}

print(p_l|l_l)#运行结果:{'alax', 'hahah', 'zh', 'bob'}

(3)差集:即A中存在但是B中不存在的元素  A.diference(B)   或者  A-B或者B-A

#集合求差集

python_l=['bob','alax','zh']

linux_l=['zh','bob','hahah']#——————转化为集合形式——————————

p_l=set(python_l)

l_l=set(linux_l)#——————求两个集合的差集————————

print(p_l-l_l)#运行结果:{'alax'}

print(l_l-p_l)#运行结果:{'hahah'}

print(p_l.difference(l_l))#运行结果:{'alax'}

图解如下:

717ab633ad239c5eb0ae1f9550c62e67.png

补充:差集更新

python_l=['bob','alax','zh','hghg']

linux_l=['zh','bob','hahah','hghg','hhhh']#——————转化为集合形式——————————

p_l=set(python_l)

l_l=set(linux_l)

p_l.difference_update(l_l)print(p_l)#运行结果:{'alax'}

(4)交叉补集   A.symmetric_difference(B)  或者  A^B

#交叉补集

python_l=['bob','alax','zh']

linux_l=['zh','bob','hahah']#——————转化为集合形式——————————

p_l=set(python_l)

l_l=set(linux_l)print(p_l.symmetric_difference(l_l))#运行结果:{'alax', 'hahah'}

print(p_l^l_l)#运行结果:{'alax', 'hahah'}

图解如下:

e3e5c98992e884ad12f250e8cc8aca09.png

2、其他关系运算

(1)判断两个集合的交集是否为空  A.isdisjoint(B)

s1={'kk','bb','zz'}

s2={'kk','ss','aa'}

s3={1,2,3}

result1=s1.isdisjoint(s2)print(result1)#运行结果:False ——> 即交集不为空

result2=s1.isdisjoint(s3)print(result2)#运行结果:True -->即交集为空

(2)判断两个集合的包含关系

集合A>=B  A.issubset(B)       集合A<=B   A.issuperset(B)

s1={1,2,3}

s2={4,5,6,1,2,3}

result1=s1.issubset(s2)print(result1)#运行结果:True

result2=s1.issuperset(s2)print(result2)#运行结果:False

result3=s2.issuperset(s1)print(result3)#运行结果:True

(3)更新 A.update(B)

s1={1,2,5}

s2={7,8}

s1.update(s2)print(s1)#运行结果:{1, 2, 5, 7, 8}

三、补充:

集合是可变类型,当定义不可变集合时,可使用s=frozenset(**)

s=frozenset('hello')print(s)#运行结果:frozenset({'l', 'o', 'h', 'e'})#不可进行添加删除等操作

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值