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
Steven Parker203,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.