Code Explanation:
1) nums = [1, 2, 3, 4] — create the original list
A list object is allocated containing the integers 1, 2, 3, 4.
Variable nums references (points to) that list.
2) ref = nums — create an alias (another name)
ref is not a new list; it points to the same list object as nums.
Any mutation through ref or nums will affect the same underlying list.
3) copy = nums[:] — make a shallow copy using slicing
nums[:] creates a new list with the same elements.
copy references this new list.
Now you have two different list objects: the original (nums) and the copy (copy).
4) ref[0] = 99 — mutate the list via the alias
This changes index 0 of the list that ref points to.
Because ref and nums reference the same object, nums[0] is also changed.
After this line: nums (and ref) is [99, 2, 3, 4].
5) copy[1] = 100 — mutate the copied list
This changes index 1 on the separate copy list only.
The original nums is unaffected by changes to copy.
After this line: copy is [1, 100, 3, 4].
6) print(nums, copy) — show both lists
Prints the current state of both lists:
[99, 2, 3, 4] [1, 100, 3, 4]
Final Output:
[99, 2, 3, 4] [1, 100, 3, 4]
Download Book - 500 Days Python Coding Challenges with Explanation
.png)

0 Comments:
Post a Comment