Python: Slice Notation on Tuple

Introduction

The term slicing in programming usually refers to obtaining a substring, sub-tuple, or sublist from a string, tuple, or list respectively.

Python offers an array of straightforward ways to slice not only these three but any iterable. An iterable is, as the name suggests, any object that can be iterated over.

In this article, we'll go over everything you need to know about Slicing Tuples in Python.

Slicing a Tuple in Python

There are a couple of ways to slice a tuple, most common of which is by using the : operator with the following syntax:

tuple[start:end]
tuple[start:end:step]

The start parameter represents the starting index, end is the ending index, and step is the number of items that are "stepped" over.

If step isn't explicitly given, the default value is 1.

Let's go ahead and slice a tuple:

a_tuple = ('You', 'can’t', 'stop', 'the', 'change,', 'any', 'more', 'than', 'you', 'can', 'stop', 'the', 'suns', 'from', 'setting.')
subtuple = a_tuple[1:5]
print(subtuple)

The resulting tuple will be:

('can’t', 'stop', 'the', 'change,')

Finding the First and the Last n Elements of a Tuple

To find the first and last n elements of a tuple, we'll slice from the first element to n and then from -n to the end of the tuple.

-n will start counting from the end of the tuple, backwards, giving us the last n elements:

n = 2
a_tuple = ('I', 'find', 'your', 'lack', 'of', 'faith', 'disturbing.')

first_n_tuple = a_tuple[:n]
print(first_n_tuple)
last_n_tuple = a_tuple[-n:]
print(last_n_tuple)

The resulting subtuples are:

('I', 'find')
('faith', 'disturbing.')

Reverse Tuple with Slice Notation

If we set the step parameter to -1, it'll start stepping backwards. If we include the whole, or even a part of the tuple, and just step backwards, it'll effectively reverse the tuple's contents:

a_tuple = ('Fear', 'is', 'the', 'path', 'to', 'the', 'dark', 'side.', 'Fear', 'leads', 'to', 'anger;', 'anger', 'leads', 'to', 'hate;', 'hate', 'leads', 'to', 'suffering.', 'I', 'sense', 'much', 'fear', 'in', 'you.', 7)
reverse_tuple = a_tuple[::-1]
print(reverse_tuple)

The reversed tuple will be:

(7, 'you.', 'in', 'fear', 'much', 'sense', 'I', 'suffering.', 'to', 'leads', 'hate', 'hate;', 'to', 'leads', 'anger', 'anger;', 'to', 'leads', 'Fear', 'side.', 'dark', 'the', 'to', 'path', 'the', 'is', 'Fear')

Finding Every n-th Element of a Tuple

To find every n-th element of a tuple, we'll jump over all non-n elements by setting the step to be n:

n = 5
a_tuple = ('The', 'dark', 'side', 'of', 'the', 'Force', 'is', 'a', 'pathway', 'to', 'many', 'abilities', 'some', 'consider', 'to', 'be', 'unnatural.')
replaced_tuple = a_tuple[::n]
print(replaced_tuple)

This will result in a tuple:

('The', 'Force', 'many', 'be')

Conclusion

Slicing any sequence in Python is easy, simple, and intuitive. Negative indexing offers an easy way to acquire the first or last few elements of a sequence, or reverse its order.

In this article, we've covered how to apply the Slice Notation on Tuples in Python.

Author image
CS student with a passion for juggling and math.