Skip to main content

Python Set copy() Function

The Set copy() method creates a Shallow copy of the set.

Syntax

my_set.copy()

copy() Parameters

Python Set copy() function does not take any parameters.

copy() Return Value

Python Set copy() function returns a new set. It does not modify the original set.

Examples

Example 1: Copy a Set with copy()

Consider this example in which:

  • original_set.copy() creates a shallow copy of original_set.
  • When a string in the copied_set is modified, it does not affect original_set because the values in the sets are references to the same objects.
# create a set
original_set = {'Tom', 'Ryan', 'David'}

# create a copy of the original_set
copied_set = original_set.copy()

print("Original set:", original_set)
print("Copied set:", copied_set)

# Modifying the copied set
copied_set.add('Anna')

print("Original set after modification:", original_set)
print("Copied set after modification:", copied_set)

output

Original set: {'David', 'Tom', 'Ryan'}
Copied set: {'David', 'Tom', 'Ryan'}
Original set after modification: {'David', 'Tom', 'Ryan'}
Copied set after modification: {'David', 'Tom', 'Ryan', 'Anna'}

Example 2: Copy a Set with Mixed Types with copy()

The copy() method allows to create a shallow copy of a set containing mixed types:

# Original set with mixed types
original_set = {1, "two", (3, 4)}

# Copying the set
copied_set = original_set.copy()

# Displaying the original and copied sets
print("Original Set:", original_set)
print("Copied Set:", copied_set)

output

Original Set: {1, 'two', (3, 4)}
Copied Set: {1, 'two', (3, 4)}

copy() vs Assignment statement

  • When the copy() method is used, a new set is created which is filled with a copy of the references from the original set.
  • When the = operator is used, a new reference to the original set is created.

For example, an assignment statement does not copy objects.

old_set = {'Ryan', 'David', 'Tom'}
new_set = old_set
new_set.add('Anna')

print(old_set) # Output: {'Anna', 'Ryan', 'David', 'Tom'}
print(new_set) # Output: {'Anna', 'Ryan', 'David', 'Tom'}

output

{'Anna', 'Ryan', 'David', 'Tom'}
{'Anna', 'Ryan', 'David', 'Tom'}

When you execute new_set = old_set, you don’t actually have two sets. The assignment just makes the two variables point to the one set in memory.

So, when you change new_set, old_set is also modified. If you want to change one copy without changing the other, use copy() method.

old_set = {'Ryan', 'David', 'Tom'}
new_set = old_set
new_set.add('Anna')

print(old_set) # Output: {'Anna', 'Tom', 'Ryan', 'David'}
print(new_set) # Output: {'Anna', 'Tom', 'Ryan', 'David'}

output

{'Anna', 'Tom', 'Ryan', 'David'}
{'Anna', 'Tom', 'Ryan', 'David'}