python数据类型-5-容器类型-集合(set)和集合的使用场景
一.说明
在python数据类型系列文章中已经介绍了 基础数据类型,容器类型 列表,元组,字典等,今天我们一起来对集合进行详细整理,包括定义、特性、创建、常用操作和方法以及使用场景等
二.set(集合)
1.定义
1.用于存储一组唯一的元素;
2.集合是无序的;
3.可以用于数学中的集合运算(如交、并、差)。
2.特性
1.唯一性:集合中的每个元素都是唯一的,不能重复;
2.无序性:集合的元素没有特定的顺序,因此无法通过索引访问;
3.可变性:集合是可变的,可以添加或删除元素;
4.支持集合运算:集合支持数学运算,如并集、交集、差集等。
3.创建集合
1.使用大括号 {}
my_set = {1, 2, 3, 4}
2.使用 set()
函数
# 从列表创建集合
my_set = set([1, 2, 3, 4])
3.从字符串创建集合
my_set = set("hello") # {'h', 'e', 'l', 'o'}
4.使用集合推导式(Set Comprehension)
# 使用集合推导式创建集合
squares = {x**2 for x in range(10)}
print(squares) # 输出: {0, 1, 4, 9, 16, 25, 36, 49, 64, 81}
# 创建只包含偶数平方的集合
even_squares = {x**2 for x in range(10) if x % 2 == 0}
print(even_squares) # 输出: {0, 4, 16, 36, 64}
这里有个隐藏知识点,就是集合唯一性?那么针对这一特性能用在什么场景呢?
1.去重
items = [1, 2, 2, 3, 4, 4]
unique_items = set(items) # {1, 2, 3, 4}
2.用户权限管理
在用户权限系统中,使用集合来管理不同角色的权限
当然集合的运算 集合的特性也决定了对数据分析和快速处理的场景使用!
4.获取集合元素
在python中 集合是无序的 所以无法通过索引来访问集合中的元素,但是可以通过迭代 内置方法来获取集合中的元素
1.使用迭代
my_set = {1, 2, 3, 4, 5}
for elem in my_set:
print(elem)
2.使用 pop()
方法
pop()
方法可以从集合中随机移除并返回一个元素。需要注意的是,这个方法会修改集合,因为它会删除一个元素
my_set = {1, 2, 3, 4, 5}
# 随机获取并移除一个元素
elem = my_set.pop()
print(elem) # 可能输出: 1(具体输出不确定,因为集合是无序的)
print(my_set) # 剩下的元素
3.使用 list()
转换
my_set = {1, 2, 3, 4, 5}
# 将集合转换为列表
set_as_list = list(my_set)
# 访问特定索引的元素
first_elem = set_as_list[0]
print(first_elem) # 输出: 1(具体输出取决于集合的内容)
4.使用 next()
和 iter()
my_set = {1, 2, 3, 4, 5}
# 创建迭代器并获取第一个元素
iterator = iter(my_set)
first_elem = next(iterator)
print(first_elem) # 输出: 1(具体输出取决于集合的内容)
虽然集合是无序的,无法通过索引直接访问,但可以通过迭代、pop()
方法、转换为列表等方式来获取集合中的元素
5.常用的操作和方法
1.添加和删除元素
# add(elem):向集合中添加元素。
my_set = {1, 2, 3, 4}
my_set.add(5) # {1, 2, 3, 4, 5}
# remove(elem):删除集合中的元素,如果元素不存在则引发 KeyError。
my_set.remove(3) # {1, 2, 4, 5}
# discard(elem):删除集合中的元素,如果元素不存在则不引发错误。
my_set.discard(10) # 不会引发错误
# pop():随机弹出一个元素并返回。
elem = my_set.pop() # 移除并返回一个元素
# clear():清空集合。
my_set.clear() # 变为 {}
2.集合运算
1.并集:使用 union()
方法或 |
运算符。
set_a = {1, 2, 3}
set_b = {3, 4, 5}
union_set = set_a.union(set_b) # {1, 2, 3, 4, 5}
union_set = set_a | set_b # {1, 2, 3, 4, 5}
2.交集:使用 intersection()
方法或 &
运算符。
intersection_set = set_a.intersection(set_b) # {3}
intersection_set = set_a & set_b # {3}
3.差集:使用 difference()
方法或 -
运算符。
difference_set = set_a.difference(set_b) # {1, 2}
difference_set = set_a - set_b # {1, 2}
4.对称差集:使用 symmetric_difference()
方法或 ^
运算符。
sym_diff_set = set_a.symmetric_difference(set_b) # {1, 2, 4, 5}
sym_diff_set = set_a ^ set_b # {1, 2, 4, 5}
4.集合的浅拷贝
set_copy = my_set.copy()
5.issubset()
:判断一个集合是否是另一个集合的子集
{1, 2}.issubset(my_set) # 返回 True
6.issuperset()
:判断一个集合是否是另一个集合的超集。
my_set.issuperset({1, 2}) # 返回 True
三.总结
python中集合有几点需要注意 1去重 2查找公共元素、差异元素等 3权限管理等 就需要考虑集合这一元素,另外注意集合和字典的区别 同样都是{}来定义,有区别也有联系,针对集合,我就写到这,有不足地方,欢迎大家补充,我来更新!
创作不易,喜欢的话点点关注 点点赞,再次_感谢!