In this article, we will discuss six different ways to get the last element of a list in python.

Get last item of a list using negative indexing

List in python supports negative indexing. So, if we have a list of size “S”, then to access the Nth element from last we can use the index “-N”. Let’s understand by an example,
Suppose we have a list of size 10,

sample_list = [1, 2, 3, 4, 5, 6, 7, 8, 9]

To access the last element i.e. element at index 9 we can use the index -1,
# Get last element by accessing element at index -1
last_elem = sample_list[-1]

print('Last Element: ', last_elem)

Output:
Last Element:  9

Similarly, to access the second last element i.e. at index 8 we can use the index -2.
last_elem = sample_list[-2]

Output:
Last Element:  8

Using negative indexing, you can select elements from the end of list, it is a very efficient solution even if you list is of very large size. Also, this is the most simplest and most used solution to get the last element of list. Let’s discuss some other ways,

Get last item of a list using list.pop()

In python, list class provides a function pop(),

list.pop(index)

It accepts an optional argument i.e. an index position and removes the item at the given index position and returns that. Whereas, if no argument is provided in the pop() function, then the default value of index is considered as -1. It means if the pop() function is called without any argument then it removes the last item of list and returns that.

Let’s use this to remove and get the last item of the list,

sample_list = [1, 2, 3, 4, 5, 6, 7, 8, 9]

# Remove and returns the last item of list
last_elem = sample_list.pop()

print('Last Element: ', last_elem)

Output:
Last Element:  9

The main difference between this approach and previous one is that, in addition to returning the last element of list, it also removes that from the list.

Get last item of a list by slicing

We can slice the end of list and then select first item from it,

sample_list = [1, 2, 3, 4, 5, 6, 7, 8, 9]

# Get a Slice of list, that contains only last item and select that item 
last_elem = sample_list[-1:][0]

print('Last Element: ', last_elem)

Output:
Last Element:  9

We created a slice of list that contains only the last item of list and then we selected the first item from that sliced list. It gives us the last item of list. Although it is the most inefficient approach, it is always good to know different options.

Get last item of a list using itemgetter

Python’s operator module provides a function,

operator.itemgetter(item)

It returns a callable object that fetches items from its operand using the operand’s __getitem__() method. Let’s use this to get the last item of list by passing list as an operand and index position -1 as item to be fetched.
import operator

sample_list = [1, 2, 3, 4, 5, 6, 7, 8, 9]

last_elem = operator.itemgetter(-1)(sample_list)

print('Last Element: ', last_elem)

Output:
Last Element:  9

It gives us the last item of list.

Get last item of a list through Reverse Iterator

In this solution we are going to use two built-in functions,

  1. reversed() function : It accepts a sequence and returns a Reverse Iterator of that sequence.
  2. next() function: It accepts an iterator and returns the next item from the iterator.

So, let’s use both the reversed() and next() function to get the last item of a list,

sample_list = [1, 2, 3, 4, 5, 6, 7, 8, 9]

# get Reverse Iterator and fetch first element from reverse direction
last_elem = next(reversed(sample_list), None)

print('Last Element: ', last_elem)

Output:
Last Element:  9

It gives us the last item of list.
How did it work?
By calling the reversed() function we got a Reverse Iterator and then we passed this Reverse Iterator to the next() function. Which returned the next item from the iterator.
As it was a Reverse Iterator of our list sequence, so it returned the first item in reverse order i.e. last element of the list.

Get last item of a list by indexing

As the indexing in a list starts from 0th index. So, if our list is of size S, then we can get the last element of list by selecting item at index position S-1.
Let’s understand this by an example,

sample_list = [1, 2, 3, 4, 5, 6, 7, 8, 9]

# get element at index position size-1
last_elem = sample_list[len(sample_list) - 1]

print('Last Element: ', last_elem)

Output:
Last Element:  9

It gives us the last item of list.

Using the len() function we got the size of the list and then by selecting the item at index position size-1, we fetched the last item of the list.

So, here we discussed 6 different ways to fetch the last element of a list, although first solution is the simplest, efficient and most used solution. But it is always good to know other options, it gives you exposure to different features of language. It might be possible that in future, you might encounter any situation where you need to use something else, like in 2nd example we deleted the last element too after fetching its value.

Happy Coding.

The Complete example is as follows,

import operator


def main():

    print('*** Get last item of a list using negative indexing ***')

    sample_list = [1, 2, 3, 4, 5, 6, 7, 8, 9]

    # Get last element by accessing element at index -1
    last_elem = sample_list[-1]

    print('Last Element: ', last_elem)

    print('*** Get last item of a list using list.pop() ***')

    sample_list = [1, 2, 3, 4, 5, 6, 7, 8, 9]

    # Remove and returns the last item of list
    last_elem = sample_list.pop()

    print('Last Element: ', last_elem)

    print('*** Get last item of a list by slicing ***')

    sample_list = [1, 2, 3, 4, 5, 6, 7, 8, 9]

    last_elem = sample_list[-1:][0]

    print('Last Element: ', last_elem)

    print('*** Get last item of a list using itemgetter ***')

    sample_list = [1, 2, 3, 4, 5, 6, 7, 8, 9]

    last_elem = operator.itemgetter(-1)(sample_list)

    print('Last Element: ', last_elem)

    print('*** Get last item of a list through Reverse Iterator ***')

    sample_list = [1, 2, 3, 4, 5, 6, 7, 8, 9]

    # get Reverse Iterator and fetch first element from reverse direction
    last_elem = next(reversed(sample_list), None)

    print('Last Element: ', last_elem)

    print("*** Get last item of a list by indexing ***")

    sample_list = [1, 2, 3, 4, 5, 6, 7, 8, 9]

    # get element at index position size-1
    last_elem = sample_list[len(sample_list) - 1]

    print('Last Element: ', last_elem)


if __name__ == '__main__':
   main()

Output:
*** Get last item of a list using negative indexing ***
Last Element:  9
*** Get last item of a list using list.pop() ***
Last Element:  9
*** Get last item of a list by slicing ***
Last Element:  9
*** Get last item of a list using itemgetter ***
Last Element:  9
*** Get last item of a list through Reverse Iterator ***
Last Element:  9
*** Get last item of a list by indexing ***
Last Element:  9