自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Python 集合應用:10+個集合操作的實用案例

開發(fā) 后端
今天,我們將通過十個實用案例,一步步探索集合的奧秘,讓 Python 編程更加得心應手。

集合(Set)在Python中是一個無序且不重復元素的序列,它非常適合用于數(shù)據(jù)去重和集合運算。今天,我們將通過10個實用案例,一步步探索集合的奧秘,讓Python編程更加得心應手。

案例1:創(chuàng)建集合和基本操作

目標:理解集合的創(chuàng)建及添加、刪除元素。

# 創(chuàng)建集合
my_set = {1, 2, 3}
print("初始集合:", my_set)

# 添加元素
my_set.add(4)
print("添加元素后:", my_set)

# 刪除元素
my_set.remove(2)
print("刪除元素后:", my_set)

輸出:

初始集合: {1, 2, 3}
添加元素后: {1, 2, 3, 4}
刪除元素后: {1, 3, 4}

注意:add()用于添加元素,remove()用于刪除元素,若元素不存在會拋出異常。

案例2:集合的并集

目標:合并兩個集合的所有元素。

set1 = {1, 2, 3}
set2 = {2, 3, 4}
union_set = set1.union(set2)
print("并集:", union_set)

輸出:

并集: {1, 2, 3, 4}

技巧:使用|也可以實現(xiàn)并集操作,如set1 | set2。

案例3:交集

目標:找出兩個集合共有的元素。

set1 = {1, 2, 3, 4}
set2 = {2, 3, 4, 5}
intersection = set1.intersection(set2)
print("交集:", intersection)

輸出:

交集: {2, 3, 4}

小貼士:&是交集的快捷符號,例如set1 & set2。

案例4:差集

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

set1 = {1, 2, 3, 4}
set2 = {3, 4, 5, 6}
difference = set1.difference(set2)
print("差集:", difference)

輸出:

差集: {1, 2}

使用提示:也可以用-操作符來表示差集,如set1 - set2。

案例5:對稱差集

目標:找出兩個集合里獨有的元素,即非交集部分。

set1 = {1, 2, 3, 4}
set2 = {3, 4, 5, 6}
symmetric_difference = set1.symmetric_difference(set2)
print("對稱差集:", symmetric_difference)

輸出:

對稱差集: {1, 2, 5, 6}

快捷方式:^符號可以用來快速計算對稱差集,如set1 ^ set2。

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

目標:判斷一個集合是否是另一個集合的子集或超集。

subset = {1, 2}
superset = {1, 2, 3, 4}
print("subset是superset的子集嗎?", subset.issubset(superset))
print("superset是subset的超集嗎?", superset.issuperset(subset))

輸出:

subset是superset的子集嗎? True
superset是subset的超集嗎? True

案例7:集合推導式

目標:利用集合推導式快速生成集合。

squares = {x**2 for x in range(1, 6)}
print("平方數(shù)集合:", squares)

輸出:

平方數(shù)集合: {1, 4, 9, 16, 25}

解釋:集合推導式是一種簡潔的創(chuàng)建集合的方式,類似于列表推導式。

案例8:集合與字符串

目標:將字符串轉(zhuǎn)換為字符集合,用于去重。

my_string = "hello"
unique_chars = set(my_string)
print("去重后的字符集合:", unique_chars)

輸出:

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

應用場景:常用于統(tǒng)計文本中不重復字符的數(shù)量。

案例9:集合與迭代

目標:遍歷集合并執(zhí)行操作。

numbers = {1, 2, 3}
for num in numbers:
    print(num ** 2)

輸出:

1
4
9

提示:集合不適合需要順序訪問的場合,因為它們是無序的。

案例10:實際場景應用:數(shù)據(jù)清洗

目標:使用集合去除重復數(shù)據(jù)。

假設(shè)我們有兩個列表,分別代表數(shù)據(jù)庫的兩次查詢結(jié)果,我們需要合并這些結(jié)果并去除重復項。

query_result_1 = [101, 102, 103]
query_result_2 = [103, 104, 105]

# 使用集合合并并去重
unique_results = set(query_result_1 + query_result_2)
print("去重后的結(jié)果:", unique_results)

輸出:

去重后的結(jié)果: {101, 102, 103, 104, 105}

實踐技巧:集合操作在數(shù)據(jù)清洗和預處理中非常有用,特別是當需要快速去除重復項時。

進階應用:Python集合的高級技巧與實戰(zhàn)案例

高級技巧1:集合的 frozenset

目標:了解不可變集合frozenset,及其在需要不可變數(shù)據(jù)結(jié)構(gòu)的場景下的應用。

# 創(chuàng)建一個frozenset
frozen_set = frozenset([1, 2, 3])
try:
    frozen_set.add(4)  # 嘗試添加元素
except AttributeError as e:
    print(e)

輸出:

'frozenset' object has no attribute 'add'

重要性:frozenset可用于作為字典的鍵或集合的元素,因為它不可變且哈希。

高級技巧2:集合的異或操作

目標:理解異或操作^在集合中的應用,用于找出兩個集合中獨有的元素,不包括兩者共有的元素。

set_a = {1, 2, 3, 4}
set_b = {3, 4, 5, 6}
unique_elements = set_a ^ set_b
print(unique_elements)

輸出:

{1, 2, 5, 6}

應用:在數(shù)據(jù)對比時非常有用,找出兩邊不同的數(shù)據(jù)。

實戰(zhàn)案例:用戶權(quán)限管理

場景描述:假設(shè)你正在開發(fā)一個系統(tǒng),需要管理不同用戶的不同權(quán)限集合。每個用戶擁有一個權(quán)限集合,需要檢查用戶是否擁有特定權(quán)限,以及批量分配或移除權(quán)限。

# 用戶權(quán)限初始化
user_permissions = {
    'Alice': {'read', 'write'},
    'Bob': {'read'},
    'Charlie': {'read', 'write', 'execute'}
}

def check_permission(user, permission):
    """檢查用戶是否有特定權(quán)限"""
    return permission in user_permissions.get(user, set())

def update_permissions(user, *permissions, add=True):
    """添加或移除權(quán)限"""
    current_perms = user_permissions.get(user, set())
    if add:
        user_permissions[user] = current_perms.union(permissions)
    else:
        user_permissions[user] = current_perms.difference(permissions)

# 檢查權(quán)限
print(check_permission('Alice', 'write'))  # 輸出: True

# 更新權(quán)限
update_permissions('Bob', 'write')
print(user_permissions['Bob'])  # 輸出: {'read', 'write'}

# 移除權(quán)限
update_permissions('Bob', 'read', add=False)
print(user_permissions['Bob'])  # 輸出: {'write'}

分析:

  • 使用集合存儲權(quán)限,便于進行高效的添加、移除和檢查操作。
  • check_permission函數(shù)利用集合的成員運算符快速檢查權(quán)限。
  • update_permissions函數(shù)展示了集合的并集和差集操作,用于動態(tài)管理權(quán)限。

通過這個實戰(zhàn)案例,我們看到了集合在實際應用中的強大能力,特別是在處理元素的唯一性和集合運算方面。掌握這些技巧,將使你在處理數(shù)據(jù)和邏輯控制時更加游刃有余。

責任編輯:趙寧寧 來源: 手把手PythonAI編程
相關(guān)推薦

2024-09-12 17:05:13

2018-01-02 10:36:29

Linux命令Cheat

2021-08-19 10:30:13

Java集合排序程序開發(fā)

2020-09-30 14:24:58

PythonSet對象

2022-01-17 10:50:15

Python代碼內(nèi)存

2017-10-04 12:46:20

手機互聯(lián)網(wǎng)拍照

2021-05-28 08:23:03

JavaScriptSet編程

2024-01-07 13:33:14

2023-11-07 18:03:00

Python模塊工具

2025-01-03 17:10:54

2019-06-05 08:53:42

SQLPython集合操作

2020-10-13 09:38:39

Python迭代開發(fā)

2018-10-23 16:40:08

Python編程語言實用案例

2012-04-28 10:29:24

jQuery

2020-07-07 08:01:37

nc命令Linux網(wǎng)絡(luò)命令行工具

2010-03-15 17:12:52

Python字典

2024-03-01 09:03:49

LinkedLisJavaList

2024-02-22 08:59:41

JavaArrayListLinkedList

2024-09-05 10:49:42

2021-03-09 23:12:51

Python集合項目
點贊
收藏

51CTO技術(shù)棧公眾號