What’s the Double Colon :: Operator in Python?

5/5 - (2 votes)

Problem Formulation: What does the double colon string[::2] or sequence[3::4] mean in Python?

>>> string[::2]

You can observe a similar double colon :: for sequences:

>>> lst = [1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> lst[::2]

Answer: The double colon is a special case in Python’s extended slicing feature. The extended slicing notation string[start:stop:step] uses three arguments start, stop, and step to carve out a subsequence. It accesses every step-th element between indices start (included) and stop (excluded). The double colon :: occurs if you drop the stop argument. In this case, Python will use the default value and doesn’t assume an artificial stop.

Here are some examples:

  • string[::2] reads “default start index, default stop index, step size is two—take every second element”.
  • string[::3] reads “default start index, default stop index, step size is three—take every third element”.
  • string[::4] reads “default start index, default stop index, step size is four—take every fourth element.
  • string[2::2] reads “start index of two, default stop index, step size is two—take every second element starting from index 2.

Let’s have a look at those examples in a Python code shell:

>>> s = 'hello world'
>>> s[::2]
'hlowrd'
>>> s[::3]
'hlwl'
>>> s[::4]
'hor'
>>> s[2::2]
'lowrd'

Background: Slicing is a concept to carve out a substring from a given string. Use slicing notation s[start:stop:step] to access every step-th element starting from index start (included) and ending in index stop (excluded). All three arguments are optional, so you can skip them to use the default values (start=0, stop=len(lst), step=1). For example, the expression s[2:4] from string 'hello' carves out the slice 'll' and the expression s[:3:2] carves out the slice 'hl'.

You can dive into our full slicing tutorial here:

[Full Tutorial] Introduction to Slicing

Also, it may help to watch my introductory video on slicing:

To boost your Python skills, check out my free cheat sheets and code tutorials sent to you via email: