Skip to content

Commit

Permalink
pythonGH-116271 Docs: provide clarification for object assignments in…
Browse files Browse the repository at this point in the history
… the Tutorial section (python#116283)

Co-authored-by: Ned Batchelder <[email protected]>
Co-authored-by: Hugo van Kemenade <[email protected]>
  • Loading branch information
3 people authored and adorilson committed Mar 25, 2024
1 parent 6b5cf8d commit 8213910
Showing 1 changed file with 24 additions and 7 deletions.
31 changes: 24 additions & 7 deletions Doc/tutorial/introduction.rst
Original file line number Diff line number Diff line change
Expand Up @@ -405,13 +405,6 @@ indexed and sliced::
>>> squares[-3:] # slicing returns a new list
[9, 16, 25]

All slice operations return a new list containing the requested elements. This
means that the following slice returns a
:ref:`shallow copy <shallow_vs_deep_copy>` of the list::

>>> squares[:]
[1, 4, 9, 16, 25]

Lists also support operations like concatenation::

>>> squares + [36, 49, 64, 81, 100]
Expand All @@ -435,6 +428,30 @@ the :meth:`!list.append` *method* (we will see more about methods later)::
>>> cubes
[1, 8, 27, 64, 125, 216, 343]

Simple assignment in Python never copies data. When you assign a list
to a variable, the variable refers to the *existing list*.
Any changes you make to the list through one variable will be seen
through all other variables that refer to it.::

>>> rgb = ["Red", "Green", "Blue"]
>>> rgba = rgb
>>> id(rgb) == id(rgba) # they reference the same object
True
>>> rgba.append("Alph")
>>> rgb
["Red", "Green", "Blue", "Alph"]

All slice operations return a new list containing the requested elements. This
means that the following slice returns a
:ref:`shallow copy <shallow_vs_deep_copy>` of the list::

>>> correct_rgba = rgba[:]
>>> correct_rgba[-1] = "Alpha"
>>> correct_rgba
["Red", "Green", "Blue", "Alpha"]
>>> rgba
["Red", "Green", "Blue", "Alph"]

Assignment to slices is also possible, and this can even change the size of the
list or clear it entirely::

Expand Down

0 comments on commit 8213910

Please sign in to comment.