Why does `copy.copy` leave your sublists shared, and when do you actually need `copy.deepcopy`?
Short drills on what this video just taught. Write the code, run the checks, and reveal the answer only if you are stuck.
old holds three sublists. Make new a second name for that same list object — no copy of any kind. Then, working only through new, change the element at position 1 of the third sublist to 6, and append the sublist [7, 8].
Slots holding pointers to sublists
Draw an old_list of three sublists with each top-level slot pointing off to its sublist, alias it with new_list = old_list, set new_list[2][1] = 6, and record what both names show.
copy.copy duplicating only the top level
Take old_list = [[1, 2], [3, 4], [5, 6]], set new_list = copy.copy(old_list), append [7, 8] to old_list, set old_list[1][1] = 9, and write both printed results.
copy.deepcopy duplicating every level
Repeat that same append and sublist edit with copy.deepcopy, write the two printed lists, and note the general rule about objects in memory versus the names pointing at them.