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}
广告