溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python的集合類型舉例分析

發布時間:2021-12-07 14:59:28 來源:億速云 閱讀:211 作者:iii 欄目:開發技術
# Python的集合類型舉例分析

## 一、集合類型概述

Python中的集合(Set)是一種無序、可變且不包含重復元素的數據結構。它基于數學中的集合概念實現,提供了高效的成員檢測和集合運算功能。集合類型在Python中通過`set`和`frozenset`兩個內置類實現,其中:
- `set`:可變集合,創建后可增刪元素
- `frozenset`:不可變集合,創建后不可修改

## 二、集合的創建與基本操作

### 1. 集合創建
```python
# 空集合必須用set()創建
empty_set = set()  

# 非空集合的創建方式
nums = {1, 2, 3}  # 直接使用花括號
chars = set('hello')  # 從可迭代對象創建
frozen = frozenset([1, 2, 2, 3])  # 不可變集合

2. 基本操作示例

# 添加元素
nums.add(4)        # {1, 2, 3, 4}
nums.update([5,6]) # {1, 2, 3, 4, 5, 6}

# 刪除元素
nums.remove(3)     # 移除存在的元素
nums.discard(10)   # 安全移除(不存在不報錯)
popped = nums.pop()# 隨機移除一個元素

# 集合長度
print(len(nums))   # 輸出當前元素數量

三、集合運算實踐

1. 數學集合運算

A = {1, 2, 3}
B = {3, 4, 5}

# 并集
union = A | B        # {1, 2, 3, 4, 5}
union = A.union(B)   # 等效方法

# 交集
intersect = A & B           # {3}
intersect = A.intersection(B)

# 差集
diff = A - B                # {1, 2}
diff = A.difference(B)

# 對稱差集(僅在其中一個集合中)
sym_diff = A ^ B            # {1, 2, 4, 5}
sym_diff = A.symmetric_difference(B)

2. 集合關系判斷

X = {1, 2}
Y = {1, 2, 3}

# 子集判斷
print(X <= Y)       # True (X是Y的子集)
print(X.issubset(Y))

# 超集判斷
print(Y >= X)       # True (Y是X的超集)
print(Y.issuperset(X))

# 不相交判斷
print(X.isdisjoint({4,5}))  # True

四、集合的典型應用場景

1. 數據去重

# 列表去重高效方案
duplicates = [1, 2, 2, 3, 4, 4]
unique = list(set(duplicates))  # [1, 2, 3, 4]

2. 成員快速檢測

# 比列表檢測更高效
vocab = {'apple', 'banana', 'orange'}
print('pear' in vocab)  # O(1)時間復雜度

3. 關系數據篩選

# 找出兩個列表的交集
customers_A = {'Alice', 'Bob', 'Charlie'}
customers_B = {'Bob', 'David', 'Eve'}
common = customers_A & custmers_B  # {'Bob'}

五、集合與其他數據結構的比較

特性 列表(List) 元組(Tuple) 字典(Dict) 集合(Set)
有序性 是(Python3.7+)
可變性 是(set)/否(frozenset)
元素唯一性 鍵唯一
典型用途 有序序列存儲 不可變數據 鍵值對存儲 去重/集合運算

六、集合的進階特性

1. 集合推導式

# 類似列表推導式
squares = {x**2 for x in range(5)}  # {0, 1, 4, 9, 16}

2. 性能特點

  • 查找操作:O(1)時間復雜度
  • 內存消耗:通常比列表更大(因為需要維護哈希表)
  • 插入速度:平均O(1),最壞情況O(n)

3. 注意事項

# 不可哈希元素不能作為集合元素
invalid_set = {[1,2], [3,4]}  # TypeError

# 集合本身不可哈希(frozenset可以)
valid_dict = {frozenset({1,2}): "value"}

七、總結

Python的集合類型提供了強大的數據操作能力,特別適合需要快速成員檢測、數據去重或數學集合運算的場景。通過合理使用集合,可以顯著提升代碼的簡潔性和執行效率。在實際開發中,建議: 1. 優先考慮集合處理去重需求 2. 對頻繁的成員檢測使用集合替代列表 3. 注意集合的無序特性不適合需要保持順序的場景 4. 根據需求選擇set或frozenset “`

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女