python集合运算_初学Python——集合及其运算

一、集合定义及其功能

集合是一个无序的、不重复的数据组合,和字典列表一样也是一种数据类型。

集合两个最主要的功能:①去重(把一个列表变成集合,就自动去重了)

②关系测试(测试两组数据之间的交、并、差集等关系)

二、关系测试

首先,如何创建集合?

两种方式:(1)直接创建

a=set([1,8,2,3,5,4,5,3])

(2)将列表转化成集合

list1=[5,9,7,3,6,6,7,95,78,65,102] #创建列表

list1=set(list1) #将列表转化成集合

在这里需要说明,集合是无序的,尽管将集合a输出:print(a),得到的结果是

1354918-20180410215900834-923545112.png

看上去好像自动做了排序,其实不然,只是集合的数据太少了,输出list1就不是这样了:

1354918-20180410220017983-1153236962.png

1.取两个集合的交集:

两种写法:①intersection()方法

print(list1.intersection(a))print(a.intersection(list1))

这两种写法没有任何区别,输出结果都是

1354918-20180410220520610-1726870700.png

②数学表示

print(list_1 & a)

2.取并集:

也是两种方法:①union()方法

print("union:",a.union(list_1))

②数学表示

print("union:",a|list_1)

输出结果:

1354918-20180410220859228-48323334.png

3.取差集:

亦是两种方法:①difference()方法

print("difference:",list_1.difference(a)) #差集(list_1减去交集)

print("difference:",a.difference(list_1)) #差集(a减去交集)

②数学表示

print("list_1 - a :",list_1-a)print("a - list_1 :",a-list_1)

运行结果:

1354918-20180410221311843-1880101617.png

4.判断是否是父集和子集的关系:

issubset()方法和issuperset()方法

print("issubset:",list_1.issubset(a)) #判断list_1是不是a的子集

print("issuperset:",a.issuperset(list_1)) #判断a是不是List_1的父集

当然,肯定都不是,再创建一个集合试一试

list_2=set([1,3,5])print(list_2.issubset(a)) #判断list_2是不是a的子集,是则返回True

print(a.issuperset(list_2)) #判断a是不是list_2的父集,不是返回False

运行结果:

1354918-20180410221749472-890619632.png

5.对称差集:

对称差集是指两个集合的并集减去交集

①symmetric_difference()方法

print("symmetric_difference:",a.symmetric_difference(list_1))

②数学表示

print("a^list_1:",a^list_1)

运行结果:

1354918-20180410222136388-589872609.png

6.判断是不是相交

list_3=set([50,30,60])print("isdisjoint:",a.isdisjoint(list_3)) #判断两个集合之间的关系是不是相交,如果相交返回False

print("isdisjoint:",a.isdisjoint(list_2))

运行结果:

1354918-20180410222627257-1997131615.png

三、集合的操作

1.添加数据

添加一项:

a.add("abc") #添加一项

添加多项:

a.update([20,30,90])

2.删除数据

①remove()方法

a.remove("abc") #删除字符“abc”

②pop()方法

print(a.pop()) #随机删除,并返回删除的值

③discard()方法

a.discard(30) #删除数据

3.获取集合的长度

print(len(a)) #集合 a 的长度

4.判断数据是否是集合的成员

print(30 in a) #判断30是否是集合a的成员(列表、字典、集合、字符串都可以用这种方法来判断)

print(30 not in a) #判断30是否不是集合a的成员

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值