When programming mathematical algorithms, it is important to know if unnecessary copying is being done by your program. Copying large matrices is expensive. Consider this simple function, where w
could be a matrix or a vector or a list or a string etc.
def twice(w):
"""Replace w by 2*w"""
w *= 2
Consider a scenario where you make an object v
and then send it to this function, like in this example:
v = [2, 5, 1]
twice(v)
Task: Your task is to determine if v
is being copied when you call twice(v)
for some v
. In other words, is a deep copy of v
being implicitly made by python when you send v
as an argument to twice
? Answer this for at least two cases:
v
is a numpy array v
is a stringExplain your observations.