在第4天里,我们知道7种基本数据类型分别为:数值类型、布尔类型、字符串类型、列表、元组、字典、集合,前面我们已经学了6种,就剩下了集合。今天,让我们一起来学习一下集合。
集合(set)是一个无序的不重复元素序列
① 天生去重
② 无序
在python中,我们可以使用一对花括号{}或者set()方法来定义集合,但是如果你定义的集合是一个空集合,则只能使用set()方法。
# 定义一个集合s1 = {10, 20, 30, 40, 50}print(s1) # {50, 20, 40, 10, 30}print(type(s1)) # <class 'set'># 定义一个集合:集合中存在相同的数据s3 = {'刘备', '张飞', '刘备', '关羽'}print(s3) # {'张飞', '刘备', '关羽'}print(type(s3)) # <class 'set'># 定义空集合s4 = {}s5 = set()print(type(s4)) # <class 'dict'>print(type(s5)) # <class 'set'>
# 1、add方法增加单一数据students = set()students.add('刘备')students.add('曹操')students.add('曹操') # 集合会自动删除重复数据print(students)
b、update()方法:向集合中增加序列类型的数据(字符串、列表、元组、字典)
# 2、update方法增加序列类型数据students = set()list1 = ['刘备', '张飞', '刘备', '关羽']students.update(list1)print(students)
a、remove()方法:删除集合中的指定数据,如果数据不存在则报错
b、discard()方法:删除集合中的指定数据,如果数据不存在也不会报错。
c、pop()方法:随机删除集合中的某个数据,并返回这个数据
# 1、定义一个集合products = {'刘备', '张飞', '曹操', '关羽'}# 2、使用remove方法删除刘备这个元素products.remove('刘备')print(products)# 3、使用discard方法删除未知元素products.discard('诸葛亮')print(products)# 4、使用pop方法随机删除某个元素del_product = products.pop()print(f'随机删除的元素为:{del_product}')print(products)
a、in:判断某个元素是否在集合中,如果在,则返回Ture,否则返回False
b、not in:判断某个元素不在集合中,如果不在,则返回True,否则返回False
# 定义一个set集合s1 = {'刘备', '张飞', '曹操', '关羽'}# 判断刘备是否在s1集合中if'刘备' in s1: print('刘备在s1集合中')else: print('刘备没有出现在s1集合中')
s1= {'刘备', '张飞', '曹操', '关羽'}for i in s1: print(i)
集合(set)本身是可变但无序的,但其元素必须是不可变(可哈希)类型。这意味着你不能直接修改集合中某个已存在的元素,但可以通过一些操作来间接实现类似“修改”的效果。
下面这个表格总结了主要的“修改”操作和方法。
(1)在python中,我们可以使用 & 来球两个集合的交集:
(2)在python中,我们可以使用 | 来求两个集合的并集:
(3)在python中,我们可以使用 - 来求两个集合的差集:
# 求集合中的交集、并集、差集s1 = {'刘备', '关羽', '张飞', '貂蝉'}s2 = {'袁绍', '董卓', '吕布', '貂蝉'}# 求两个集合中的交集print(s1 & s2)# 求两个集合中的并集print(s1 | s2)# 求两个集合中的差集print(s1 - s2)print(s2 - s1)
今日学习完毕,课后作业:
已知两个小组成员:
小组a成员有:"张三"、"李四"、"王五"、"赵六"、"王五"、"钱七",
小组b成员有:"赵六"、"钱七"、"孙八"、"周九"、"孙八"。
请按照以下要求进行操作:
① 求小组a的独特成员;
② 求小组b的独特成员;
③ 求两个小组的共同成员;
④ 求所有不重复的成员。