In today’s blog, let’s explore how to perform common list operations in Python without using any built-in methods such as .index() or set(). These exercises are great for sharpening your understanding of how things work under the hood.


Problem One: Find the First Index of a Value

You are given a list of n integers. Your task is to find the zero-based index of the first occurrence of a specific value in the list. If the value isn’t found, return -1.

Constraint:

You cannot use the built-in .index() method.


Breakdown:

  • Loop through the list using indices (for i in range(len(lst))).
  • At each step, check if the current element equals the value.
  • If it does, return the current index.
  • If the loop ends without finding the value, return -1.
def find_first_index(lst, val):
    for i in range(len(lst)):  # we check every index manually
        if lst[i] == val:
            return i
    return -1

Example:

print(find_first_index([5, 3, 7, 3, 9], 3))  # Output: 1
print(find_first_index([1, 2, 3], 4))        # Output: -1

Problem Two: Count Unique Elements

You are given a list of integers. Return the number of elements that appear only once in the list.

Constraint:

No use of set(), collections.Counter(), or any built-in helper functions.


Breakdown:

  • Initialize a unique_count to keep track of how many unique elements we find.
  • Loop through each element i in the list.
  • For each i, run an inner loop j to count how many times lst[i] == lst[j].
  • If the count is exactly 1, increment unique_count.
def count_unique_elements(lst):
    unique_count = 0

    for i in range(len(lst)):
        count = 0
        for j in range(len(lst)):
            if lst[i] == lst[j]:
                count += 1
        if count == 1:
            unique_count += 1

    return unique_count

Example:

print(count_unique_elements([1, 2, 3, 2, 4]))  # Output: 3 (1, 3, 4 are unique)
print(count_unique_elements([1, 1, 1, 1]))     # Output: 0

Why This Matters:

Avoiding built-in methods helps you build stronger algorithmic thinking and gives you a deeper appreciation of what’s going on behind the scenes in Python.