目录
数据容器:set(集合)
列表可修改、支持重复元素且有序
元组、字符串不可修改、支持重复元素且有序
局限就在于:它们都支持重复元素。
集合最主要的特点就是:不支持元素的重复(自带去重功能)、并且内容无序。
集合的定义
基本语法:
定义集合变量:变量名称={元素,元素,…,元素}
定义空集合:变量名称=set()
和列表、元组、字符串等定义基本相同:
列表使用:[]
元组使用:()
字符串使用:“”
集合使用:{}
注意:集合会自动去重且无序。
示例:
# 定义集合
my_set = {"my", "you", "ergou", "二狗", "ergou"}
my_set_empty = set() # 定义空集合
print(f"my_set的内容是{my_set},类型是:{type(my_set)}")
print(f"my_set_empty的内容是{my_set_empty},类型是:{type(my_set_empty)}")
运行结果:
my_set的内容是{‘ergou’, ‘you’, ‘二狗’, ‘my’},类型是:<class ‘set’>
my_set_empty的内容是set(),类型是:<class ‘set’>
集合的常用操作–修改
因为集合是无序的,所以集合不支持下标索引访问,
但是集合和列表一样,是允许修改的,所以我们来看看集合的修改方法。
添加新元素
语法:集合.add(元素)。将指定元素,添加到集合内
结果:集合本身被修改,添加了新元素
移除元素
语法:集合.remove(元素),将指定元素,从集合内移除
结果:集合本身被修改,移除了元素。
从集合中随机取出元素
语法:集合.pop(),功能,从集合中随机取出一个元素
结果:会得到一个元素的结果。同时集合本身被修改,元素被移除
清空集合
语法:集合.clear(),功能,清空集合
结果:集合本身被清空
取出2个集合的差集
语法:集合1.difference(集合2),功能:取出集合1和集合2的差集(集合1有而集合2没有的)
结果:得到一个新集合,集合1和集合2不变
消除2个集合的差集
语法:集合1.difference_update(集合2)
功能:对比集合1和集合2,在集合1内,删除和集合2相同的元素。
结果:集合1被修改,集合2不变
2个集合合并
语法:集合1.union(集合2)
功能:将集合1和集合2组合成新集合
结果:得到新集合,集合1和集合2不变
示例:
my_set = {"my", "you", "ergou", "二狗", "ergou"}
# 添加新元素
my_set.add("python")
my_set.add("学习")
print(f"my_set条件元素后的内容是{my_set}")
# 移除元素
my_set.remove("you")
print(f"my_set移除元素后的内容是{my_set}")
# 随机取出一个元素
my_set = {"my", "you", "ergou", "二狗", "ergou"}
element = my_set.pop()
print(f"my_set集合被随机取出的元素是:{element},取出元素后的内容是{my_set}")
# 清空集合,clear
my_set.clear()
print(f"my_set清空后的内容是{my_set}")
# 取2个集合的差集
set1 = {1, 2, 3}
set2 = {1, 5, 6}
set3 = set1.difference(set2)
print(f"取出差集后的结果是:{set3}")
print(f"取差集后,原有的set1的内容:{set1}")
print(f"取出差集后,原有的set2的内容:{set2}")
# 消除2个集合的差集
set1 = {1, 2, 3}
set2 = {1, 5, 6}
set1.difference_update(set2)
print(f"消除差集后,set1的内容:{set1}")
print(f"消除差集后,set2的内容:{set2}")
# 2个集合合并为1个
set1 = {1, 2, 3}
set2 = {1, 5, 6}
set3 = set1.union(set2)
print(f"2个集合合并后的结果是:{set3}")
print(f"合并后set1的内容:{set1}")
print(f"合并后set2的内容:{set2}")
运行结果:
my_set条件元素后的内容是{‘python’, ‘ergou’, ‘you’, ‘my’, ‘二狗’, ‘学习’}
my_set移除元素后的内容是{‘python’, ‘ergou’, ‘my’, ‘二狗’, ‘学习’}
my_set集合被随机取出的元素是:ergou,取出元素后的内容是{‘you’, ‘二狗’, ‘my’}
my_set清空后的内容是set()
取出差集后的结果是:{2, 3}
取差集后,原有的set1的内容:{1, 2, 3}
取出差集后,原有的set2的内容:{1, 5, 6}
消除差集后,set1的内容:{2, 3}
消除差集后,set2的内容:{1, 5, 6}
2个集合合并后的结果是:{1, 2, 3, 5, 6}
合并后set1的内容:{1, 2, 3}
合并后set2的内容:{1, 5, 6}
集合的常用操作 - 集合长度
查看集合的元素数量
语法:len(集合)
功能:统计集合内有多少元素
结果:得到一个整数结果
示例:
# 统计集合元素数量len()
set1 = {1, 2, 3, 4, 5, 1, 2, 3, 4, 5}
num = len(set1)
print(f"集合内的元素数量有:{num}个")
运行结果:
集合内的元素数量有:5个
集合的常用操作 - for循环遍历
集合同样支持使用for循环遍历
要注意:集合不支持下标索引,所以也就不支持使用while循环。
示例:
# 集合的遍历
# 集合不支持下标索引,不能用while循环
# 可以用for循环
set1 = {1, 2, 3, 4, 5}
for element in set1:
print(f"集合的元素有:{element}")
运行结果:
集合的元素有:1
集合的元素有:2
集合的元素有:3
集合的元素有:4
集合的元素有:5
集合常用功能总结
编号 | 操作 | 说明 |
---|---|---|
1 | 集合.add(元素) | 集合内添加一个元素 |
2 | 集合.remove(元素) | 移除集合内指定的元素 |
3 | 集合.pop() | 从集合中随机取出一个元素 |
4 | 集合.clear() | 将集合清空 |
5 | 集合1.difference(集合2) | 得到一个新集合,内含2个集合的差集,原有的2个集合内容不变 |
6 | 集合1.difference_update(集合2) | 在集合1中,删除集合2中存在的元素,集合1被修改,集合2不变 |
7 | 集合1.union(集合2) | 得到1个新集合,内含2个集合的全部元素,原有的2个集合内容不变 |
8 | len(集合) | 得到一个整数,记录了集合的元素数量 |
集合的特点
1、可以容纳多个数据
2、可以容纳不同类型的数据(混装)
3、数据是无序存储的(不支持下标索引)
4、不允许重复数据存在
5、可以修改(增加或删除元素等)
6、支持for循环,不支持while循环,因为不支持下标索引
集合练习——信息去重
现有列表:my_list = [‘二狗’, ‘ergou’, ‘er’, ‘ergou’, ‘我’, ‘二狗’]
请:
①定义一个空集合
②通过for循环遍历列表
③在for循环中将列表的元素添加至集合
④最终得到元素去重后的集合对象,并打印输出
my_list = ['二狗', 'ergou', 'er', 'ergou', '我', '二狗']
# 定义一个空集合
my_set = set()
# 通过for循环遍历列表
for element in my_list:
# 在for循环中将列表的元素添加至集合
my_set.add(element)
# 最终得到元素去重后的集合对象,并打印输出
print(f"列表的内容是:{my_list}")
print(f"通过for循环后,得到的集合对象是:{my_set}")
运行结果:
列表的内容是:[‘二狗’, ‘ergou’, ‘er’, ‘ergou’, ‘我’, ‘二狗’]
通过for循环后,得到的集合对象是:{‘我’, ‘二狗’, ‘ergou’, ‘er’}