Python之集合

集合

在实际应用场景中,我们经常会遇到一些统计情况,比如说篮球队和足球队有哪些人,现在我有两个列表,分别记录了篮球队的人员和足球队的人员,但是张三和李四参加了两个队,合并两个表则会记录两次,我们该怎么办呢?
下面我们来讲一下集合:
这里的集合和我们在数学中学的集合是差不多的,有相同的特性:
1.去重
2.关系测试
具体请看如下代码:

# 集合的两个重要特性:1.去重;2.关系测试
list_1 = [1,3,5,7,6,7,3]
list_1 = set(list_1)       # 将列表转为集合,重复的只保留一个
print(list_1)

# 关系测试
list_2 = set([2,4,6,8,1])
print(list_1.intersection(list_2))  # 求交集
print(list_1.union(list_2)) # 求并集
print(list_1.difference(list_2))    # 求差集(1中有而2中没有的项)
list_3 = set([1,3])
print(list_3.issubset(list_1))  #3是否是1的子集
print(list_1.issuperset(list_3))    # 1是否是3的父集
print(list_1.symmetric_difference(list_2))  # 对称差集:取两个集合中的不同项,去掉交集
print(list_1.isdisjoint(list_2))    # 判断两个集合是否有交集,无交集为True

# 关系测试的符号表示
print(list_1 & list_2)  # 交集
print(list_1 | list_2)  # 并集
print(list_1 - list_2)  # 差集
print(list_1 ^ list_2)  # 对称差集

# 集合的基本操作:增删改查,方法和列表基本相同,不再赘述
# 集合无序,没有插入
# 增
list_1.add(9)   # 添加一项
list_1.update(11,22,33) # 添加多项
# 删
list_1.pop()    # 由于无序,随机删除并返回元素
list_1.remove("xxx")    # 删除指定元素并返回,不存在则报错
list_1.discard("xxx")   # 删除指定元素,不返回,不报错

这里再提醒一下大家,集合中的元素是不能有可变对象的,如下:

set_1 = set([1,(2,3),4])
set_2 = set([1,(2,[3,4]),5])
print(set_1)

可以含有元组,但是任何一个其子成员也不可以是可变对象。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值