diff --git a/maths/average_mode.py b/maths/average_mode.py index d472dc04d..83db82007 100644 --- a/maths/average_mode.py +++ b/maths/average_mode.py @@ -1,7 +1,4 @@ -import statistics - - -def mode(input_list): # Defining function "mode." +def mode(input_list: list) -> list: # Defining function "mode." """This function returns the mode(Mode as in the measures of central tendency) of the input data. @@ -9,23 +6,32 @@ def mode(input_list): # Defining function "mode." >>> input_list = [2, 3, 4, 5, 3, 4, 2, 5, 2, 2, 4, 2, 2, 2] >>> mode(input_list) - 2 - >>> input_list = [2, 3, 4, 5, 3, 4, 2, 5, 2, 2, 4, 2, 2, 2] - >>> mode(input_list) == statistics.mode(input_list) - True + [2] + >>> input_list = [3, 4, 5, 3, 4, 2, 5, 2, 2, 4, 4, 2, 2, 2] + >>> mode(input_list) + [2] + >>> input_list = [3, 4, 5, 3, 4, 2, 5, 2, 2, 4, 4, 4, 2, 2, 4, 2] + >>> mode(input_list) + [2, 4] + >>> input_list = ["x", "y", "y", "z"] + >>> mode(input_list) + ['y'] + >>> input_list = ["x", "x" , "y", "y", "z"] + >>> mode(input_list) + ['x', 'y'] """ - # Copying input_list to check with the index number later. - check_list = input_list.copy() result = list() # Empty list to store the counts of elements in input_list for x in input_list: result.append(input_list.count(x)) - input_list.remove(x) - y = max(result) # Gets the maximum value in the result list. - # Returns the value with the maximum number of repetitions. - return check_list[result.index(y)] + if not result: + return [] + y = max(result) # Gets the maximum value in the result list. + # Gets values of modes + result = {input_list[i] for i, value in enumerate(result) if value == y} + return sorted(result) if __name__ == "__main__": - data = [2, 3, 4, 5, 3, 4, 2, 5, 2, 2, 4, 2, 2, 2] - print(mode(data)) - print(statistics.mode(data)) + import doctest + + doctest.testmod()