python 学习之路(集合)

本文详细介绍了Python中集合的基本操作,包括如何声明集合、进行交集、并集、差集等运算,以及如何添加、删除元素等常见操作。同时,还讲解了如何判断两个集合间的关系,如子集、父集、对称差集等。
集合本身无序,并且数据不重复,主要作用:
1.去重 列表转换成集合就能去重
2.做两组数据的 交集、差集、并集 (关系测试)

声明集合

# 先声明一个列表
list1 = [1,2,3,4,4,5,3,7,2]
# 将列表变成集合 
list1 = set(list1)
# 打印结果:{1, 2, 3, 4, 5, 7} 可以看出已经去重;
  • 1
  • 2
  • 3
  • 4
  • 5

取交集

list1 = [1,2,3,4,4,5,3,7,2]
list1 = set(list1)
list2 = set([2,33,44,5,66,7,77])
a = list1.intersection(list2) # 交集方法
# a的结果:{2, 5, 7}

list1 & list2 # 用符号表示交集
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

取并集

list1 = set([1,2,3,4,4,5,3,7,2])
list2 = set([2,33,44,5,66,7,77])
a = list1.union(list2) # 并集方法
# a的结果:{1, 2, 3, 4, 5, 33, 7, 66, 44, 77}

list1 | list2 # 用符号表示并集
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

取差集

list1 = set([1,2,3,4,4,5,3,7,2])
list2 = set([2,33,44,5,66,7,77])
a = list1.difference(list2) # 差集方法
# a的结果:{1, 3, 4}
list2.difference(list1) # 会得到另外一种结果

list1 - list2 # 用符号表示差集
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

子集 父集

list1 = set([1,2,3,4,4,5,3,7,2])
list2 = set([2,4 ,4])
list1.issubset(list2) # 判断list1 是不是 list2的子集 结果:False  
# list1 <= list2

list1.issuperset(list2) # 判断list1 是不是 list2的父集 结果:True
# list1 >= list2
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

对称差集

list1 = set([1,2,3,4,4,5,3,7,2])
list2 = set([2,33,44,5,66,7,77])
a = list1.symmetric_difference(list2) # 对称差集方法
# 说明:就是并集的反集 a的结果:{1, 66, 3, 4, 77, 33, 44}

list1 ^ list2 # 用符号表示对称差集
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

判断是否没有交集

list1 = set([1,2,3,4])
list2 = set([5,6,7,8])
list1.isdisjoint(list2) # 没有交集返回True
  • 1
  • 2
  • 3

基本操作

添加

list1 = set([1,2,3,4])
list1.add(5) # 添加一项
print(list1) # 结果:{1, 2, 3, 4, 5}
list1.update([5,6,7,8]) # 添加多项
  • 1
  • 2
  • 3
  • 4

删除

list1 = set([1,2,3,4])
list1.remove(1)
print(list1) # 结果:{2, 3, 4}
# a.pop() pop 方法是删除并且将此值返回
# a.discard('a') # 如果没有被删除的值将不会报错 remove 会报错
  • 1
  • 2
  • 3
  • 4
  • 5

长度

len(list1) # 长度
  • 1

判断 a 是否是 b 集合的成员

a in b
  • 1

判断 a 是否不是 b 集合的成员

a not in b
  • 1

浅复制

list1.copy() # 对集合list1 的一个浅复制
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值