Python - 複製集合



Python 複製集合

在 Python 中複製集合是指建立一個新的包含與現有集合相同元素的集合。與簡單的變數賦值(建立對原始集合的引用)不同,複製可確保對複製集合所做的更改不會影響原始集合,反之亦然。

在 Python 中複製集合有不同的方法,包括使用 copy() 方法、set() 函式或集合推導式。

使用 copy() 方法複製集合

集合類中的 copy() 方法用於建立集合物件的淺複製。

淺複製意味著該方法建立一個新的集合物件,但不會建立原始集合中包含的物件的副本。相反,它複製了對這些物件的引用。

因此,如果原始集合包含可變物件(如列表、字典或其他集合),則對這些物件的修改將反映在原始集合和複製集合中。

語法

以下是 copy() 方法的語法:

set.copy()

返回值

copy() 方法返回一個新的集合,它是現有集合的淺複製。

示例

在以下示例中,我們建立了集合 "lang1" 的副本並將其儲存在 "lang2" 中,然後使用 id() 獲取這兩個集合及其記憶體地址。

在 "lang1" 中新增一個元素後,我們再次獲取這兩個集合及其記憶體地址,以表明 "lang1" 和 "lang2" 是獨立的副本:

lang1 = {"C", "C++", "Java", "Python"}
print ("lang1: ", lang1, "id(lang1): ", id(lang1))
lang2 = lang1.copy()
print ("lang2: ", lang2, "id(lang2): ", id(lang2))
lang1.add("PHP")
print ("After updating lang1")
print ("lang1: ", lang1, "id(lang1): ", id(lang1))
print ("lang2: ", lang2, "id(lang2): ", id(lang2))

輸出

這將產生以下輸出:

lang1: {'Python', 'Java', 'C', 'C++'} id(lang1): 2451578196864
lang2: {'Python', 'Java', 'C', 'C++'} id(lang2): 2451578197312
After updating lang1
lang1: {'Python', 'C', 'C++', 'PHP', 'Java'} id(lang1): 2451578196864
lang2: {'Python', 'Java', 'C', 'C++'} id(lang2): 2451578197312

使用 set() 函式複製集合

Python set() 函式用於建立一個新的集合物件。它接受一個可迭代物件作為引數,並將其轉換為集合,在此過程中刪除所有重複元素。如果未提供引數,則它建立一個空集合。

我們可以透過將原始集合作為引數傳遞給 set() 建構函式來使用 set() 函式複製集合。這會建立一個包含原始集合所有元素的新集合,確保對新集合的任何修改都不會影響原始集合。

示例

在這個示例中,我們使用 `set()` 函式建立了一個名為 "original_set" 的集合的副本,並將副本儲存在 "copied_set" 中。

# Original set
original_set = {1, 2, 3, 4}
# Copying the set using the set() function
copied_set = set(original_set)
print("copied set:", copied_set) 

# Demonstrating that the sets are independent
copied_set.add(5)
print("copied set:",copied_set)      
print("original set:",original_set)   

輸出

以下是上述程式碼的輸出結果:

copied set: {1, 2, 3, 4}
copied set: {1, 2, 3, 4, 5}
original set: {1, 2, 3, 4}

使用集合推導式複製集合

集合推導式是 Python 中建立集合的一種簡潔方法。它用於透過迭代可迭代物件並可選地應用條件來過濾元素,從而生成一個新的集合。其語法類似於列表推導式,但使用花括號 {} 而不是方括號 []。

{expression for item in iterable if condition}

我們可以使用集合推導式透過迭代原始集合的元素並直接使用這些元素建立一個新集合來複制集合。

示例

在下面的示例中,我們建立了一個名為 "original_set" 的原始集合,然後使用集合推導式將其複製到 "copied_set" 中。

# Original set
original_set = {1, 2, 3, 4, 5}

# Copying the set using set comprehension
copied_set = {x for x in original_set}
print("Copied set:", copied_set)

輸出

上述程式碼的輸出結果如下所示:

Copied set: {1, 2, 3, 4, 5}
廣告