How to get the second-to-last element of a list in Python?

Python lists support negative indexing, where -1 refers to the last element and -2 refers to the second-to-last element. This makes accessing elements from the end of a list straightforward.

Using Negative Indexing

The most direct way is using index -2 ?

numbers = [1, 2, 3, 4, 5]
second_last = numbers[-2]
print(second_last)
4

Handling Edge Cases

For lists with fewer than 2 elements, accessing [-2] raises an IndexError. Use a conditional check ?

def get_second_last(items):
    if len(items) >= 2:
        return items[-2]
    else:
        return None

# Test with different list sizes
print(get_second_last([1, 2, 3, 4, 5]))  # Has enough elements
print(get_second_last([10]))              # Only one element
print(get_second_last([]))                # Empty list
4
None
None

Alternative Methods

You can also use positive indexing with len() ?

fruits = ['apple', 'banana', 'cherry', 'date']
second_last = fruits[len(fruits) - 2]
print(second_last)
cherry

Comparison

Method Syntax Best For
Negative indexing list[-2] Simple, readable code
Positive indexing list[len(list) - 2] When negative indexing isn't clear
With error handling if len(list) >= 2 Production code safety

Conclusion

Use list[-2] for the second-to-last element. Always check list length in production code to avoid IndexError exceptions.

Updated on: 2026-03-15T19:15:10+05:30

26K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements