[python学习笔记]-02-set集合


前言

本节主要介绍python中的集合
集合的定义,集合的基本操作,集合中的常用函数


提示:以下是本篇文章正文内容

一、集合

1.定义

  • 集合set是一个无序的不重复元素序列
  • 常用来对两个列表进行交并差的处理性
  • 集合与列表一样,支持所有数据类型

2.集合与列表区别

功能列表集合
顺序有序无序
内容可重复不可重复
功能用于数据的使用用于数据的交集并集差集的获取
索引有索引无索引
符号[] [1, 2, 3]{} {1, 2, 3}

3.集合的创建

通过set函数来创建集合,不能使用{}来创建空集合

a_set = set() # 空集合
a_set = set([1, 2, 3]) # 传入列表或元组
b_set = {1, 2, 3} # 传入元素
c_set = {} # 错误定义,{}默认是字典

4.集合的简单使用

case

# 集合的简单使用
a = set()
print(type(a))

b = set(['python', 'django', 'flask'])
print(b)

c = {(1, 2, 3), '123', 1}
print(c)

d = {}
print(d, type(d))

a_list = ['python', 'django', 'python', 'flask']
b_set = set(a_list)
print(b_set)

运行结果
需要注意集合b并不是把列表加入到集合中,而是将列表中的元素加入到集合中
d默认创建的是字典而非集合

<class 'set'>
{'django', 'python', 'flask'}
{'123', 1, (1, 2, 3)}
{} <class 'dict'>
{'django', 'python', 'flask'}

二、集合的增删改

1.add函数

用于集合总添加一个元素,如果集合中已存在该元素则该函数不执行
set.add(item)
item要添加到集合中的元素
case:

a_list = ['python', 'django', 'django', 'flask']
a_set = set()
a_set.add(a_list[0])
a_set.add(a_list[1])
a_set.add(a_list[2])
a_set.add(a_list[-1])
print(a_set)
a_set.add(True)
a_set.add(None)
print(a_set)

运行结果

{'python', 'flask', 'django'}
{True, 'django', 'flask', 'python', None}

最后加入集合的元素并不一定在集合的最后边,集合是无序的

2.update函数

加入一个新的集合(或列表、元组、字符串),如新集合内的元素在原集合中存在则无视
set.update(iterable)
iterable: 集合,列表元组字符串
case:

a_tuple = ('a', 'b', 'c')
a_set = set()
a_set.update(a_tuple)
print(a_set)
a_set.update('python')
print(a_set)

运行结果:

{'a', 'b', 'c'}
{'h', 'c', 'o', 'n', 'a', 'b', 'y', 'p', 't'}

字符串中的元素被拆散后加入到了集合中
可以使用update函数来代替add函数
update可以认为是add的高级版,一次可以添加多个成员

3.remove函数

将集合中的某个元素删除,如元素不存在将会报错
set.remove(item)
item: 当前集合中的一个元素,注意 不是索引,集合没有索引

4.clear函数

清空当前集合中的所有元素
set.clear()
无参数

5.del函数

del只能直接删除集合自身

case:

a_set = set()
a_list = ['python', 'django', 'django', 'flask']
a_set.update(a_list)
print(a_set)

print('func remove')
a_set.remove('python')
print(a_set)

print('func clear')
a_set.clear()
print(a_set)

print('func del')
del(a_set)

运行结果:

{'python', 'flask', 'django'}
func remove
{'flask', 'django'}
func clear
set()
func del

6.重要声明

  • 集合无法通过索引获取元素
  • 集合无法获取元素的任何方法
  • 集合只是用来处理列表或元组的一种临时类型,不适合存储与传输

三、集合运算 差、交、并

1.获取两个集合的差集 (difference函数)

difference函数
返回集合的差集,即返回的集合元素包含在第一个集合中,但不包含在第二个集合中
a_set.diference(b_set)
b_set当前集合需要对比的集合
返回值:返回原始集合与对比集合的差集
case:

drivers = ['dewei', 'xiaomu', 'xiaoming', 'xiaoman']
testers = ['xiaomu', 'xiaoman', 'xiaogang', 'xiaotao']

dirver_set = set(drivers)
test_set = set(testers)

sinple_drivers = dirver_set.difference(test_set)
print(sinple_drivers)

运行结果:

{'xiaoming', 'dewei'}

2.获取两个集合的交集 (intersection函数)

intersection函数
返回两个或更多集合中包含的元素
a_set.intersection(b_set…)
b_set…: 与当前集合对比的1个或多个集合
返回值:返回原始集合与对比集合的交集
case:

a = ['dewei', 'xiaomu', 'xiaohua', 'xiaoguo']
b = ['xiaohua', 'dewei', 'xiaoman', 'xiaolin']
c = ['xiaoguang', 'xiaobai', 'dewei', 'xiaoyuan']

a_set = set(a)
b_set = set(b)
c_set = set(c)

print(a_set, b_set, c_set)

res = a_set.intersection(b_set, c_set)
# 将集合转换成列表
xiaotou = list(res)
print('{} 是小偷'.format(xiaotou[0]))

运行结果:

{'xiaomu', 'dewei', 'xiaohua', 'xiaoguo'} {'xiaolin', 'dewei', 'xiaoman', 'xiaohua'} {'dewei', 'xiaoguang', 'xiaoyuan', 'xiaobai'}
dewei 是小偷

3.获取两个集合的并集 (union函数)

union函数
返回过个集合并集,即包含了所有集合的元素,重复的元素只会出现一次
a_set.union(b_set…)
b_set…: 与当前集合对比的1或多个集合
case:

a_school = ['周五半天', '周末免费培训', '周五休息']
b_school = ['放学时间从6点改为5点', '作业少留点', '换舒服的座椅']
c_school = ['作业少留点', '周五半天', '伙食改善']

a_set = set(a_school)
b_set = set(b_school)
c_set = set(c_school)

print(a_set, b_set, c_set)

help_data = a_set.union(b_set, c_set)
# help_data = a_set.union(b_school, c_school)
# 使用注释部分也可以实现一样的功能
print(help_data)

运行结果:

{'周五半天', '周五休息', '周末免费培训'} {'作业少留点', '放学时间从6点改为5点', '换舒服的座椅'} {'伙食改善', '作业少留点', '周五半天'}
{'周五休息', '换舒服的座椅', '伙食改善', '作业少留点', '周五半天', '放学时间从6点改为5点', '周末免费培训'}

4.判断集合中是否有相同元素 (isdisjoint函数)

isdisjoint函数
功能:判断两个集合是否包含相同的元素,如果没有返回True,否则返回False
用法:a_set.isdisjoint(b_set)
b_set:与当前集合用来判断的集合
返回布尔值
case:

# 缺点,不能包含
ccompany_not_allow = {'女', '喝酒', '抽烟', '睡懒觉'}

one_player = {'男', '跑步', '朝气', '喝酒'}
two_player = {'女', '生活规律', '跆拳道'}
three_player = {'男', '太极拳'}
four_player = {'男', '空手道', '年轻'}

print(ccompany_not_allow.isdisjoint(one_player))
print(ccompany_not_allow.isdisjoint(two_player))
print(ccompany_not_allow.isdisjoint(three_player))
print(ccompany_not_allow.isdisjoint(four_player))

运行结果:

False
False
True
True

使用了5个集合,主集合是ccompany_not_allow,另外4个集合对应4个人的特点

总结

这里对文章进行总结:
本文介绍了集合的创建,集合与列表的区别,集合增删改的常用函数以及集合运算的函数。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值