Python 简明教程
Python - Copy Sets
Python Copy Sets
在 Python 中复制集合是指创建一个新 set ,其中包含与现有集合中相同元素。与简单的变量赋值(它会创建一个指向原始集合的引用)不同,复制能确保对复制的集合所做的更改不会影响原始集合,反之亦然。
在 Python 中,有不同的方法可以复制一个集合,包括使用 copy() 方法、set() 函数或集合解析。
Copy Sets Using the copy() Method
set 类中的 copy() 方法用于创建集合对象的浅拷贝。
浅拷贝意味着该方法会创建一个新的集合对象,但不会创建原始集合中包含对象的副本。相反,它复制这些对象的引用。
因此,如果原始集合包含可变对象(如列表、字典或其他集合),则对这些对象的修改都会反映在原始集合和复制的集合中。
Example
在以下示例中,我们正在创建集合“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))
Output
这将产生以下输出 −
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
Copy Sets Using the set() Function
Python set() 函数用于创建新的集合对象。它接受一个可迭代对象作为参数,并将其转换成一个集合,在此过程中删除所有重复元素。如果没有提供参数,则创建一个空集合。
我们可以通过将原始集合作为参数传递给 set() 构造函数来使用 set() 函数复制集合。这创建一个新集合,其中包含原始集合的所有元素,从而确保对新集合的任何修改都不会影响原始集合。
Example
在这个示例中,我们使用 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)
Output
以下是上面代码的输出: -
copied set: {1, 2, 3, 4}
copied set: {1, 2, 3, 4, 5}
original set: {1, 2, 3, 4}