一、集合set的定义
考虑使用集合的场景,通过已经学习的列表、元组、字符串三个数据容器特性来分析:
-
列表可以修改、支持重复元素且有序
-
元组、字符串、不可修改、支持重复元素且有序
局限就在于:它们支持重复元素
集合定义语法:
二、集合的特点
集合-->不支持重复元素(自带去重功能)且无序
三、集合的操作
集合的常用操作 -- 修改
由于集合无序,因此不支持:下标索引访问 也因此集合不是序列
但是集合和列表一样是支持修改的
1、添加新元素 add()
语法:集合.add(元素) 将指定元素添加到集合内
结果:集合本身被修改添加了新元素
2、移除元素 remove()
语法:集合.remove(元素) 将指定元素从集合内移除
结果:集合本身被修改移除了元素
3、从集合中随机取出元素 pop()
语法:集合.pop(元素)
结果:得到一个元素的结果。同时集合本身被修改,元素被移除
4、取两个结果的差集 difference()
语法:集合1.difference(集合2) 即就是取出集合1有而集合2没有的
结果:得到一个新集合,集合1和集合2不变。
5、消除2个集合差集 difference_update()
语法:集合1.difference_update(集合2)
功能:对比集合1和集合2,在集合1内,删除和集合2相同的元素。
结果:集合1被修改,集合2不变
6、两集合合并
语法:集合1.union(集合2)
功能:将集合1和集合2组成新集合。
结果:得到新集合 集合、集合2不变
代码实操:
"""
演示数据容器集合的使用
"""
# 定义集合 不重复、无序
my_set = {"春天的熊","joker","blame",True,21,'blame'}
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)}")
# 添加新元素 add()
my_set.add('jizz')
my_set.add('joker') # 重复的不会添加
print(f"添加元素后结果:{my_set}")
# 移除元素 remove()
my_set.remove(True)
print(f"移除元素后结果:{my_set}")
# 随机取出一个元素 pop()
my_set = {"春天的熊","joker","blame",21}
element = my_set.pop()
print(f"随机取出的元素是:{element},取出后集合结果为{my_set}")
# 情空集合 clear()
my_set.clear()
print(f"集合被清空了,结果是{my_set}")
# 取两个集合的差集 集合1.difference(集合2) --取出集合1有而集合2没有的元素
set1 = {1,2,3}
set2 = {1,5,6}
set3 = set1.difference(set2)
print(f"set1={set1},set2={set2},取出差集后的结果:{set3}")
# 消除2个集合差集 difference_update()
set1 = {1,2,3}
set2 = {1,5,6}
set1.difference_update(set2)
print(f"消除差集后:set1={set1},set2={set2}")
# 2个集合合并为一个 union()
set1 = {1,2,3}
set2 = {1,5,6}
set3 = set1.union(set2)
print(f"set1={set1},set2={set2},合并后集后的结果:{set3}")
# 统计集合元素数量 len()
set1 = {1,2,3,'fu*k'}
num = len(set1)
print(f"{set1}中元素数量为:{num}")
集合的遍历:集合不支持下标索引,不能用while循环。可以用for循环
#集合的遍历 集合不支持下标索引,不能用while循环。可以用for循环
set1 = {1,2,3,'fu*k'}
for element in set1:
print(f"{set1}中的元素:{element}")
集合练习:
# 有如下列表对象:
my_list = ['春天的熊','joker','bear','coding','python','sHSb','sHSb']
# 定义一个空集合
my_set = set()
# 通过for循环遍历列表
for element in my_list:
my_set.add(element)
print(f"去重后集合对象:{my_set}")
# 在for循环中将列表中的元素添加至集合
# 最终得到去重后的集合额对象 打印输出