Python Introducing Lists Using Lists Review Mutability

I don't understand taco_joints = restaurants.copy()

so the definition part says taco_joints = restaurants.copy() ← but restaurants is not defined? how did python make a copy of it? if we are making a copy of all_restaurants, shouldn't it be all_restaurants.copy()?

and if taco_joints is already a copy of all_restaurants, why are we still making a copy of it? to me it seems we have the original data in all_restaurant, and can modify in taco_joints, which is a copy of the former list

1 Answer

Steven Parker
Steven Parker
203,217 Points

The definition of "restaurants" is on the line above the assignment:

def tacos_only(restaurants):     # restaurants is defined here as the parameter
    taco_joints = restaurants.copy()

So, when the function is called with "all_restaurants" as the argument, the parameter name "restaurants" becomes a reference to "all_restaurants" (but not a copy). So this copy is made in "taco_joints" so it can be altered without affecting the original.

Then for the loop, "taco_joints" is also copied so altering it won't disturb the loop iterations.

Thank you! understood