文章目录
前言
本节主要介绍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个人的特点
总结
这里对文章进行总结:
本文介绍了集合的创建,集合与列表的区别,集合增删改的常用函数以及集合运算的函数。