python数据类型-5-容器类型-集合(set)和集合的使用场景

时间:2024-10-29 11:38:53

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权限管理等 就需要考虑集合这一元素,另外注意集合和字典的区别 同样都是{}来定义,有区别也有联系,针对集合,我就写到这,有不足地方,欢迎大家补充,我来更新!

创作不易,喜欢的话点点关注 点点赞,再次_感谢!