0
0
PythonHow-ToBeginner · 3 min read

How to Find Element in Sorted List in Python Quickly

To find an element in a sorted list in Python, use the bisect module which provides fast binary search functions like bisect_left. This method returns the position where the element should be, allowing you to check if it exists efficiently.
📐

Syntax

The bisect module offers bisect_left(list, element) which returns the index where element should be inserted to keep the list sorted. You can then check if the element at that index matches your target.

python
import bisect

index = bisect.bisect_left(sorted_list, element)
💻

Example

This example shows how to find if the number 7 exists in a sorted list using bisect_left. It prints the index if found or a message if not.

python
import bisect

sorted_list = [1, 3, 5, 7, 9, 11]
element = 7

index = bisect.bisect_left(sorted_list, element)

if index < len(sorted_list) and sorted_list[index] == element:
    print(f"Element {element} found at index {index}.")
else:
    print(f"Element {element} not found in the list.")
Output
Element 7 found at index 3.
⚠️

Common Pitfalls

  • Using list.index() on a large sorted list is slow because it searches linearly.
  • Not checking if the index returned by bisect_left is within list bounds can cause errors.
  • Assuming the element is found without verifying the value at the found index can lead to wrong results.
python
import bisect

sorted_list = [1, 3, 5, 7, 9]
element = 6

# Wrong: assumes element is found
index = bisect.bisect_left(sorted_list, element)
print(sorted_list[index])  # This may print wrong element or cause IndexError

# Right: check bounds and value
if index < len(sorted_list) and sorted_list[index] == element:
    print(f"Found at {index}")
else:
    print("Not found")
Output
7 Not found
📊

Quick Reference

FunctionDescription
bisect_left(list, x)Find insertion point for x to keep list sorted (leftmost)
bisect_right(list, x)Find insertion point for x to keep list sorted (rightmost)
Checking elementVerify if element at index equals target to confirm presence

Key Takeaways

Use the bisect module for fast searching in sorted lists.
Always check if the found index is within list bounds before accessing.
Verify the element at the found index matches your target.
Avoid using list.index() on large sorted lists for performance reasons.
bisect_left returns the leftmost position to insert the element.