Python集合类型的操作与应用

一、Python集合类型

Python中的集合类型是一个包含0个或多个数据项的无序的、不重复的数据组合,其中,元素类型只能是固定数据类型,如整数、浮点数、字符串、元组等,相反,如列表、字典和集合类型本身都是可变数据类型,因此不能作为集合元素使用。

1.无序性

集合是无序组合,没有索引和位置的概念,不能分片,集合中的元素可以动态增加或删除。集合用大括号“{}”表示。

s={1,2,3,'a','b',(5,'c')}

print(s)
--------------------------
{123'b',(5,'c'), 'a'}

***Repl Closed***

由上例可知,集合元素打印后的顺序和定义顺序可以不同。

2.不重复性

集合元素是独一无二的,使用集合类型可以过滤掉重复元素。set(x)函数用于生成集合,输入任意组合数据类型的参数,返回一个无序不重复的集合。

s=set('omg')

print(s)
-----------
{'o',g','m'}

***Repl Closed***
s=set(('human','animal','water','oil'))

print(s)
-------------------------------------'oil', 'animal' , 'water' , ' human ' }

***Repl Closed***
二、集合类型的关系操作

1.S-T或S.difference(T):S与T的差集。

返回一个新集合,包括在集合S中但不在集合T中的元素。

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
S={1,2,3,4}

T={2,3,4,5}

print(S-T)
---------------
{1}

***Repl Closed***

或者

S={1,2,3,4}

T={2,3,4,5}

print(S.difference(T))
---------------
{1}

***Repl Closed***
S={1,2,3,4}

T={2,3,4,5}

print(T-S)
---------------
{5}

***Repl Closed***

或者

S={1,2,3,4}

T={2,3,4,5}

print(T.difference(S))
---------------
{5}

***Repl Closed***

2.S&T或S.intersection(T):S与T的交集。

返回一个新集合,包括同时在集合S和集合T中的元素。

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
S={1,2,3,4}

T={2,3,4,5}

print(S&T)
---------------
{234}

***Repl Closed***

或者

S={1,2,3,4}

T={2,3,4,5}

print(S.intersection(T))
---------------
{234}

***Repl Closed***

3.S|T或S.union(T):S与T的并集。

返回一个新集合,包括集合S和集合T中的所有元素。

S={1,2,3,4}

T={2,3,4,5}

print(S|T)
---------------
{12345}

***Repl Closed***

或者

S={1,2,3,4}

T={2,3,4,5}

print(S.union(T))
---------------
{12345}

***Repl Closed***

4.S^T或S.symmetric_difference(T):S与T的对等差集,包括集合S和集合T中的元素,但不包括同时在其中的元素。

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
S={1,2,3,4}

T={2,3,4,5}

print(S^T)
---------------
{15}

***Repl Closed***

或者

S={1,2,3,4}

T={2,3,4,5}

print(S.symmetric_difference(T))
---------------
{15}

***Repl Closed***

5.S<=T或S.issubset(T):如果S与T相同或S是T的子集,返回True,否则返回False,可以用S<T判断S是否是T的真子集。

S={1,2,3}

T={1,2,3,4,5}

print(S<=T)
---------------
True

***Repl Closed***

或者

S={1,2,3}

T={1,2,3,4,5}

print(S.issubset(T))
---------------
True

***Repl Closed***

6.S>=T或S.issuperset(T):如果S与T相同或S是T的父集,返回True,否则返回False,可以用S>T判断S是否是T的真父集。

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
S={1,2,3}

T={1,2,3,4,5}

print(S>=T)
---------------
False

***Repl Closed***

或者

S={1,2,3}

T={1,2,3,4,5}

print(S.issuperset(T))
---------------
False

***Repl Closed***
三、集合类型的操作函数或方法

1.S.add(x):如果数据项x不在集合S中,将x增加到s中。

S=set((1,2,3,'omg','ok','yes'))

S.add(4)

print(S)
---------------
{1234,'ok', 'omg' , 'yes'}

***Repl Closed***

2.S.clear():移除S中的所有数据项。

S=set((1,2,3,'omg','ok','yes'))

S.clear()

print(S)
---------------
set()

***Repl Closed***

3.S.copy():返回集合S的一个副本。

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
S=set((1,2,3,'omg','ok','yes'))

S.copy()

print(S)
---------------
{123'yes' , 'omg' , 'ok'}

***Repl Closed***

4.S.pop():随机返回集合中S的一个元素,如果S为空,产生KeyError异常。

S=set((1,2,3,'omg','ok','yes'))

T=S.pop()

print(T)
---------------
1

***Repl Closed***

打印除被pop出的元素以外的所有元素的集合

S=set((1,2,3,'omg','ok','yes'))

S.pop()

print(S)
---------------
{23'ok', 'omg','yes'}

***Repl Closed***

如果S为空,产生KeyError异常

S=set(())

T=S.pop()

print(T)
---------------
Traceback (most recent call last) :
	File "111.py", line 2, in <module>
		T=S.pop()
KeyError: 'pop from an empty set'

***Repl Closed***

5.S.discard(x):如果数据项x在集合S中,移除该元素;如果x不在集合S中,不报错。

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
S=set((1,2,3,'omg','ok','yes'))

S.discard('omg')

print(S)
---------------
{123'yes' , 'ok'}

***Repl Closed***

如果x不在集合S中,不报错

S=set((1,2,3,'omg','ok','yes'))

S.discard('python')

print(S)
---------------
{123'omg','ok','yes'}

***Repl Closed***

6.S.remove(x):如果数据项x在集合S中,移除该元素;如果x不在集合S中,产生KeyError异常。

S=set((1,2,3,'omg','ok','yes'))

S.remove('omg')

print(S)
---------------
{123'yes','ok'}

***Repl Closed***

如果x不在集合S中,产生KeyError异常

S=set((1,2,3,'omg','ok','yes'))

S.remove('python')

print(S)
---------------
Traceback (most recent call last):
	File "111.py", line 2, in <module>
		s.remove('python ')
KeyError: 'python'

***Repl Closed***

7.S.isdisjoint(T):如果集合S与集合T没有相同元素,返回True,否则返回False。

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
S=set((1,2,3,'omg','ok','yes'))

T=set((4,5,6,'do','true'))

print(S.isdisjoint(T))
---------------
True

***Repl Closed***
S=set((1,2,3,'omg','ok','yes'))

T=set((1,2,5,6,'do','ok','true'))

print(S.isdisjoint(T))
---------------
False

***Repl Closed***

8.len(S):返回集合S的元素个数。

S=set((1,2,3,'omg','ok','yes'))

print(len(S))
---------------
6

***Repl Closed***

9.x in S:如果x是集合S的元素,返回True,否则返回False。

S=set((1,2,3,'omg','ok','yes'))

print(3 in S)
---------------
True

***Repl Closed***
S=set((1,2,3,'omg','ok','yes'))

print('python' in S)
---------------
False

***Repl Closed***

10.x not in S:如果x不是集合S的元素,返回True,否则返回False。

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
S=set((1,2,3,'omg','ok','yes'))

print(3 not in S)
---------------
False

***Repl Closed***
S=set((1,2,3,'omg','ok','yes'))

print('python' not in S)
---------------
True

***Repl Closed***

集合类型主要用于成员关系测试、元素去重和删除数据项。

1.成员关系测试

S={1,2,3,'omg','ok','yes'}

T='omg' in S

print(T)
---------------
True

***Repl Closed***

2.元素去重

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
S={1,2,3,'omg','ok','yes',2,'omg'}

T=set(S)

print(T)
---------------
{123'ok','yes','omg'}

***Repl Closed***

3.删除数据项

#去重同时删除数据项

S={1,2,3,'omg','ok','yes',2,'omg'}

T=set(S)

P=tuple(T-{'ok'})

print(P)
---------------
{123'yes','omg'}

***Repl Closed***
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值