Get the Last N Elements of a List in Python

In Python, you can retrieve the last N elements of a list using slicing, the deque from the collections module, or loops. The most efficient way is to use negative indexing with slicing: my_list[-N:]. Below, we explore multiple ways to achieve this.


Examples

1. Get the Last N Elements Using List Slicing

The most straightforward way to get the last N elements of a list is by using slicing with a negative index.

</>
Copy
# Sample list
numbers = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]

# Getting the last 3 elements
last_three = numbers[-3:]

# Printing the result
print("Last 3 elements:", last_three)

Explanation:

  • numbers is a list containing 10 integer elements.
  • The slicing operation numbers[-3:] selects the last three elements of the list.
  • Negative indexing allows us to count elements from the end of the list.

Output:

Last 3 elements: [80, 90, 100]

2. Get the Last N Elements Using the collections.deque Method

If you are working with large lists and need an efficient way to get the last N elements, you can use deque from the collections module.

</>
Copy
from collections import deque

# Sample list
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

# Getting the last 4 elements efficiently
last_four = deque(numbers, maxlen=4)

# Converting deque to list
result = list(last_four)

# Printing the result
print("Last 4 elements:", result)

Explanation:

  • deque() is initialized with the list and a fixed size using maxlen=4.
  • It automatically retains only the last N elements, discarding earlier ones.
  • Converting deque back to a list gives us the last 4 elements efficiently.

Output:

Last 4 elements: [7, 8, 9, 10]

3. Get the Last N Elements Using a Loop

If slicing is not an option, a simple loop can extract the last N elements from a list.

</>
Copy
# Sample list
colors = ["red", "blue", "green", "yellow", "purple", "orange"]

# Number of elements to get
N = 3

# Extracting the last N elements using a loop
last_colors = []
for i in range(len(colors) - N, len(colors)):
    last_colors.append(colors[i])

# Printing the result
print("Last 3 colors:", last_colors)

Explanation:

  • len(colors) - N calculates the starting index of the last N elements.
  • The for loop iterates from that index to the end of the list.
  • Each element is appended to last_colors, creating the result.

Output:

Last 3 colors: ['yellow', 'purple', 'orange']

4. Get the Last N Elements Using enumerate() with List Comprehension

Another method to retrieve the last N elements is using enumerate() with list comprehension.

</>
Copy
# Sample list
scores = [88, 76, 92, 85, 91, 78, 95, 89]

# Number of elements to retrieve
N = 5

# Using list comprehension with enumerate
last_scores = [score for index, score in enumerate(scores) if index >= len(scores) - N]

# Printing the result
print("Last 5 scores:", last_scores)

Explanation:

  • enumerate(scores) provides index-value pairs.
  • The condition index >= len(scores) - N ensures only the last N elements are added.
  • This method is an alternative to slicing when more control is needed.

Output:

Last 5 scores: [92, 85, 91, 78, 95]

Conclusion

Python provides multiple ways to get the last N elements from a list:

  1. List Slicing (-N:): The most efficient method for general use.
  2. collections.deque: Best for large lists where performance matters.
  3. Loop Method: Useful when slicing is not available.
  4. enumerate() with List Comprehension: Provides conditional control.