PYTHON基础技能 – Python集合应用:10+个集合操作的实用案例

释放双眼,带上耳机,听听看~!

集合(Set)在Python中是一个无序且不重复元素的序列,它非常适合用于数据去重和集合运算。今天,我们将通过10个实用案例,一步步探索集合的奥秘,让Python编程更加得心应手。

案例1:创建集合和基本操作

目标:理解集合的创建及添加、删除元素。


1
<em>#&nbsp;创建集合</em><br>my_set&nbsp;=&nbsp;{1,&nbsp;2,&nbsp;3}<br>print("初始集合:",&nbsp;my_set)<br><br><em>#&nbsp;添加元素</em><br>my_set.add(4)<br>print("添加元素后:",&nbsp;my_set)<br><br><em>#&nbsp;删除元素</em><br>my_set.remove(2)<br>print("删除元素后:",&nbsp;my_set)

输出


1
初始集合:&nbsp;{1,&nbsp;2,&nbsp;3}<br>添加元素后:&nbsp;{1,&nbsp;2,&nbsp;3,&nbsp;4}<br>删除元素后:&nbsp;{1,&nbsp;3,&nbsp;4}

注意

1
add()

用于添加元素,

1
remove()

用于删除元素,若元素不存在会抛出异常。

案例2:集合的并集

目标:合并两个集合的所有元素。


1
set1&nbsp;=&nbsp;{1,&nbsp;2,&nbsp;3}<br>set2&nbsp;=&nbsp;{2,&nbsp;3,&nbsp;4}<br>union_set&nbsp;=&nbsp;set1.union(set2)<br>print("并集:",&nbsp;union_set)

输出


1
并集:&nbsp;{1,&nbsp;2,&nbsp;3,&nbsp;4}

技巧:使用

1
|

也可以实现并集操作,如

1
set1 | set2

案例3:交集

目标:找出两个集合共有的元素。


1
set1&nbsp;=&nbsp;{1,&nbsp;2,&nbsp;3,&nbsp;4}<br>set2&nbsp;=&nbsp;{2,&nbsp;3,&nbsp;4,&nbsp;5}<br>intersection&nbsp;=&nbsp;set1.intersection(set2)<br>print("交集:",&nbsp;intersection)

输出


1
交集:&nbsp;{2,&nbsp;3,&nbsp;4}

小贴士

1
&amp;

是交集的快捷符号,例如

1
set1 &amp; set2

案例4:差集

目标:找出在一个集合中但不在另一个集合中的元素。


1
set1&nbsp;=&nbsp;{1,&nbsp;2,&nbsp;3,&nbsp;4}<br>set2&nbsp;=&nbsp;{3,&nbsp;4,&nbsp;5,&nbsp;6}<br>difference&nbsp;=&nbsp;set1.difference(set2)<br>print("差集:",&nbsp;difference)

输出


1
差集:&nbsp;{1,&nbsp;2}

使用提示:也可以用

1
-

操作符来表示差集,如

1
set1 - set2

案例5:对称差集

目标:找出两个集合里独有的元素,即非交集部分。


1
set1&nbsp;=&nbsp;{1,&nbsp;2,&nbsp;3,&nbsp;4}<br>set2&nbsp;=&nbsp;{3,&nbsp;4,&nbsp;5,&nbsp;6}<br>symmetric_difference&nbsp;=&nbsp;set1.symmetric_difference(set2)<br>print("对称差集:",&nbsp;symmetric_difference)

输出


1
对称差集:&nbsp;{1,&nbsp;2,&nbsp;5,&nbsp;6}

快捷方式

1
^

符号可以用来快速计算对称差集,如

1
set1 ^ set2

案例6:集合的子集和超集

目标:判断一个集合是否是另一个集合的子集或超集。


1
subset&nbsp;=&nbsp;{1,&nbsp;2}<br>superset&nbsp;=&nbsp;{1,&nbsp;2,&nbsp;3,&nbsp;4}<br>print("subset是superset的子集吗?",&nbsp;subset.issubset(superset))<br>print("superset是subset的超集吗?",&nbsp;superset.issuperset(subset))

输出


1
subset是superset的子集吗?&nbsp;True<br>superset是subset的超集吗?&nbsp;True

案例7:集合推导式

目标:利用集合推导式快速生成集合。


1
squares&nbsp;=&nbsp;{x**2&nbsp;for&nbsp;x&nbsp;in&nbsp;range(1,&nbsp;6)}<br>print("平方数集合:",&nbsp;squares)

输出


1
平方数集合:&nbsp;{1,&nbsp;4,&nbsp;9,&nbsp;16,&nbsp;25}

解释:集合推导式是一种简洁的创建集合的方式,类似于列表推导式。

案例8:集合与字符串

目标:将字符串转换为字符集合,用于去重。


1
my_string&nbsp;=&nbsp;"hello"<br>unique_chars&nbsp;=&nbsp;set(my_string)<br>print("去重后的字符集合:",&nbsp;unique_chars)

输出


1
去重后的字符集合:&nbsp;{'o',&nbsp;'l',&nbsp;'e',&nbsp;'h'}

应用场景:常用于统计文本中不重复字符的数量。

案例9:集合与迭代

目标:遍历集合并执行操作。


1
numbers&nbsp;=&nbsp;{1,&nbsp;2,&nbsp;3}<br>for&nbsp;num&nbsp;in&nbsp;numbers:<br>&nbsp;&nbsp;&nbsp;&nbsp;print(num&nbsp;**&nbsp;2)

输出


1
1<br>4<br>9

提示:集合不适合需要顺序访问的场合,因为它们是无序的。

案例10:实际场景应用:数据清洗

目标:使用集合去除重复数据。

假设我们有两个列表,分别代表数据库的两次查询结果,我们需要合并这些结果并去除重复项。


1
query_result_1&nbsp;=&nbsp;&#091;101,&nbsp;102,&nbsp;103]<br>query_result_2&nbsp;=&nbsp;&#091;103,&nbsp;104,&nbsp;105]<br><br><em>#&nbsp;使用集合合并并去重</em><br>unique_results&nbsp;=&nbsp;set(query_result_1&nbsp;+&nbsp;query_result_2)<br>print("去重后的结果:",&nbsp;unique_results)

输出


1
去重后的结果:&nbsp;{101,&nbsp;102,&nbsp;103,&nbsp;104,&nbsp;105}

实践技巧:集合操作在数据清洗和预处理中非常有用,特别是当需要快速去除重复项时。


进阶应用:Python集合的高级技巧与实战案例

高级技巧1:集合的 frozenset

目标:了解不可变集合

1
frozenset

,及其在需要不可变数据结构的场景下的应用。


1
<em>#&nbsp;创建一个frozenset</em><br>frozen_set&nbsp;=&nbsp;frozenset(&#091;1,&nbsp;2,&nbsp;3])<br>try:<br>&nbsp;&nbsp;&nbsp;&nbsp;frozen_set.add(4)&nbsp;&nbsp;<em>#&nbsp;尝试添加元素</em><br>except&nbsp;AttributeError&nbsp;as&nbsp;e:<br>&nbsp;&nbsp;&nbsp;&nbsp;print(e)

输出


1
'frozenset'&nbsp;object&nbsp;has&nbsp;no&nbsp;attribute&nbsp;'add'

重要性

1
frozenset

可用于作为字典的键或集合的元素,因为它不可变且哈希。

高级技巧2:集合的异或操作

目标:理解异或操作

1
^

在集合中的应用,用于找出两个集合中独有的元素,不包括两者共有的元素。


1
set_a&nbsp;=&nbsp;{1,&nbsp;2,&nbsp;3,&nbsp;4}<br>set_b&nbsp;=&nbsp;{3,&nbsp;4,&nbsp;5,&nbsp;6}<br>unique_elements&nbsp;=&nbsp;set_a&nbsp;^&nbsp;set_b<br>print(unique_elements)

输出


1
{1,&nbsp;2,&nbsp;5,&nbsp;6}

应用:在数据对比时非常有用,找出两边不同的数据。

实战案例:用户权限管理

场景描述:假设你正在开发一个系统,需要管理不同用户的不同权限集合。每个用户拥有一个权限集合,需要检查用户是否拥有特定权限,以及批量分配或移除权限。


1
<em>#&nbsp;用户权限初始化</em><br>user_permissions&nbsp;=&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;'Alice':&nbsp;{'read',&nbsp;'write'},<br>&nbsp;&nbsp;&nbsp;&nbsp;'Bob':&nbsp;{'read'},<br>&nbsp;&nbsp;&nbsp;&nbsp;'Charlie':&nbsp;{'read',&nbsp;'write',&nbsp;'execute'}<br>}<br><br>def&nbsp;check_permission(user,&nbsp;permission):<br>&nbsp;&nbsp;&nbsp;&nbsp;"""检查用户是否有特定权限"""<br>&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;permission&nbsp;in&nbsp;user_permissions.get(user,&nbsp;set())<br><br>def&nbsp;update_permissions(user,&nbsp;*permissions,&nbsp;add=True):<br>&nbsp;&nbsp;&nbsp;&nbsp;"""添加或移除权限"""<br>&nbsp;&nbsp;&nbsp;&nbsp;current_perms&nbsp;=&nbsp;user_permissions.get(user,&nbsp;set())<br>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;add:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;user_permissions&#091;user]&nbsp;=&nbsp;current_perms.union(permissions)<br>&nbsp;&nbsp;&nbsp;&nbsp;else:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;user_permissions&#091;user]&nbsp;=&nbsp;current_perms.difference(permissions)<br><br><em>#&nbsp;检查权限</em><br>print(check_permission('Alice',&nbsp;'write'))&nbsp;&nbsp;<em>#&nbsp;输出:&nbsp;True</em><br><br><em>#&nbsp;更新权限</em><br>update_permissions('Bob',&nbsp;'write')<br>print(user_permissions&#091;'Bob'])&nbsp;&nbsp;<em>#&nbsp;输出:&nbsp;{'read',&nbsp;'write'}</em><br><br><em>#&nbsp;移除权限</em><br>update_permissions('Bob',&nbsp;'read',&nbsp;add=False)<br>print(user_permissions&#091;'Bob'])&nbsp;&nbsp;<em>#&nbsp;输出:&nbsp;{'write'}</em>

分析

  • 使用集合存储权限,便于进行高效的添加、移除和检查操作。
  • 1
    check_permission

    函数利用集合的成员运算符快速检查权限。

  • 1
    update_permissions

    函数展示了集合的并集和差集操作,用于动态管理权限。

通过这个实战案例,我们看到了集合在实际应用中的强大能力,特别是在处理元素的唯一性和集合运算方面。掌握这些技巧,将使你在处理数据和逻辑控制时更加游刃有余。

给TA打赏
共{{data.count}}人
人已打赏
安全运维

安全运维之道:发现、解决问题的有效闭环

2024-4-14 20:59:36

安全运维

稳定性建设 – 架构优化的关键策略

2025-2-11 17:15:56

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索