Split the even/odd index elements into two lists in Python

avatar

Borislav Hadzhiev

Last updated: Jun 25, 2022

banner

Photo from Unsplash

Split the even/odd index elements into two lists in Python #

Use list slicing to split the even/odd index elements into two lists, e.g. even = my_list[::2] and odd = my_list[1::2]. The first list slice will only contain the elements with an even index and the second the elements with an odd index.

main.py
my_list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] # ✅ get all elements with even index in the list even = my_list[::2] print(even) # 👉️ [0, 2, 4, 6, 8, 10] # ✅ get all elements with odd index in the list odd = my_list[1::2] print(odd) # 👉️ [1, 3, 5, 7, 9] # ---------------------------------------- # ✅ using a for loop even = [] odd = [] for index, item in enumerate(my_list): if index % 2 == 0: even.append(item) else: odd.append(item) print(even) # 👉️ [0, 2, 4, 6, 8, 10] print(odd) # 👉️ [1, 3, 5, 7, 9]

We used list slicing to split the even and odd index elements into two lists.

The syntax for list slicing is my_list[start:stop:step].

The start index is inclusive and the stop index is exclusive (up to, but not including).

Python indexes are zero-based, so the first item in a list has an index of 0, and the last item has an index of -1 or len(my_list) - 1.

The slice my_list[::2] gets the even index elements of the original list.

main.py
my_list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] even = my_list[::2] print(even) # 👉️ [0, 2, 4, 6, 8, 10]

The start and end indexes are omitted, so the slice starts at index 0 and goes to the end of the list.

The step value is set to 2, so the slice selects every second element, starting at index 0.

You can use the same approach to get only the elements with an odd index of a list.

main.py
my_list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] odd = my_list[1::2] print(odd) # 👉️ [1, 3, 5, 7, 9]

Instead of starting at index 0, the slice starts at index 1 and selects every second element.

The stop index is omitted, so the slice selects the odd elements of the entire list.

Alternatively, you can use a for loop.

To split the even and odd index elements into two lists:

  1. Declare even and odd variables and set them to empty lists.
  2. Iterate over the original list.
  3. Push the even index elements into the even list and the odd index elements into the odd list.
main.py
my_list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] even = [] odd = [] for index, item in enumerate(my_list): if index % 2 == 0: even.append(item) else: odd.append(item) print(even) # 👉️ [0, 2, 4, 6, 8, 10] print(odd) # 👉️ [1, 3, 5, 7, 9]

The enumerate function takes an iterable and returns an enumerate object containing tuples where the first element is the index, and the second is the item.

On each iteration, we use the modulo operator to check if the current index is even or odd.

The modulo (%) operator returns the remainder from the division of the first value by the second.

main.py
print(10 % 2) # 👉️ 0 print(10 % 4) # 👉️ 2

The last step is to append the even indexes to the even list and the odd indexes to the odd list.

I wrote a book in which I share everything I know about how to become a better, more efficient programmer.
book cover
You can use the search field on my Home Page to filter through all of my articles.