Python Data Science Jobs & Interviews
20.7K subscribers
192 photos
4 videos
25 files
335 links
Your go-to hub for Python and Data Science—featuring questions, answers, quizzes, and interview tips to sharpen your skills and boost your career in the data-driven world.

Admin: @Hussein_Sheikho
Download Telegram
Question 22 (Interview-Level):
Explain the difference between deepcopy and regular assignment (=) in Python with a practical example. Then modify the example to show how deepcopy solves the problem.

import copy

# Original Problem
original = [[1, 2], [3, 4]]
shallow_copy = original.copy()
shallow_copy[0][0] = 99
print(original) # What happens here?

# Solution with deepcopy
deep_copied = copy.deepcopy(original)
deep_copied[1][0] = 77
print(original) # What happens now?


Options:
A) Both modify the original list
B) copy() creates fully independent copies
C) Shallow copy affects nested objects, deepcopy doesn't
D) deepcopy is slower but creates true copies

#Python #Interview #DeepCopy #MemoryManagement

By: https://t.iss.one/DataScienceQ
2
Question:
What are the differences between shallow copy and deep copy in Python, and when can using a shallow copy lead to unexpected behavior? Provide an example illustrating this.

Answer:
A shallow copy creates a new object but inserts references to the items found in the original object. A deep copy creates a new object and recursively copies all objects found in the original, meaning that the copy and original are fully independent.

Using a shallow copy can lead to unexpected behavior when the original object contains nested mutable objects because changes to nested objects in the copy will reflect in the original.

Example demonstrating the issue:
import copy

original = [[1, 2], [3, 4]]
shallow_copy = copy.copy(original)
shallow_copy.append(99)

print("Original:", original) # Outputs: [[1, 2, 99], [3, 4]]
print("Shallow Copy:", shallow_copy) # Outputs: [[1, 2, 99], [3, 4]]


Notice that modifying the nested list in the shallow copy also affected the original.

How to avoid this:
Use deepcopy from the copy module to create a fully independent copy:
deep_copy = copy.deepcopy(original)
deep_copy.append(100)

print("Original:", original) # Outputs: [[1, 2, 99], [3, 4]]
print("Deep Copy:", deep_copy) # Outputs: [[1, 2, 99, 100], [3, 4]]


#Python #Advanced #ShallowCopy #DeepCopy #MutableObjects #CopyModule
2👍1