Write a Python function to find the median of a list.
Posted by TinaGrn
Last Updated: August 15, 2024
Finding the Median of a List in Python
The median is a measure of central tendency that represents the middle value of a dataset when the values are arranged in order. For a list of numbers, the steps to find the median involve sorting the list and identifying the middle element(s). Here’s a Python function to compute the median:
def find_median(numbers):
    # First, sort the list of numbers
    sorted_numbers = sorted(numbers)
    n = len(sorted_numbers)
    
    # Check if the list is empty
    if n == 0:
        raise ValueError("The list is empty. Median is not defined.")
    
    # Calculate median
    mid_index = n // 2
    if n % 2 == 0:  # If the list has an even number of elements
        median = (sorted_numbers[mid_index - 1] + sorted_numbers[mid_index]) / 2
    else:  # If the list has an odd number of elements
        median = sorted_numbers[mid_index]
    
    return median

# Example usage
numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5]
print("Median:", find_median(numbers))
Explanation
1. Sorting the List: The function begins by sorting the list of numbers using Python’s built-in sorted() function. This ensures the numbers are in ascending order, which is crucial for determining the median. 2. Calculating the Number of Elements: The length of the sorted list is calculated and stored in the variable n. 3. Handling an Empty List: If the length n is zero, the function raises a ValueError, highlighting that the median cannot be calculated for an empty list. 4. Finding the Median: - For an even number of elements, the median is the average of the two middle numbers. - For an odd number of elements, the median is the middle number. 5. Return the Median: The computed median value is returned.
Example
Given the list [3, 1, 4, 1, 5, 9, 2, 6, 5], the function will output Median: 3, which is the middle value after sorting the list. This function is versatile and can handle any list of numerical values, making it a practical tool in statistical analysis and data processing in Python.