mirror of
https://github.com/TheAlgorithms/Python.git
synced 2024-11-24 13:31:07 +00:00
42 lines
1.1 KiB
Python
42 lines
1.1 KiB
Python
|
"""
|
||
|
Find median of a list of numbers.
|
||
|
|
||
|
Read more about medians:
|
||
|
https://en.wikipedia.org/wiki/Median
|
||
|
"""
|
||
|
|
||
|
|
||
|
def median(nums):
|
||
|
"""Find median of a list of numbers."""
|
||
|
# Sort list
|
||
|
sorted_list = sorted(nums)
|
||
|
print("List of numbers:")
|
||
|
print(sorted_list)
|
||
|
|
||
|
# Is number of items in list even?
|
||
|
if len(sorted_list) % 2 == 0:
|
||
|
# Find index for first middle value.
|
||
|
mid_index_1 = len(sorted_list) / 2
|
||
|
# Find index for second middle value.
|
||
|
mid_index_2 = -(len(sorted_list) / 2) - 1
|
||
|
# Divide middle values by 2 to get average (mean).
|
||
|
med = (sorted_list[mid_index_1] + sorted_list[mid_index_2]) / float(2)
|
||
|
return med # Return makes `else:` unnecessary.
|
||
|
# Number of items is odd.
|
||
|
mid_index = (len(sorted_list) - 1) / 2
|
||
|
# Middle index is median.
|
||
|
med = sorted_list[mid_index]
|
||
|
return med
|
||
|
|
||
|
|
||
|
def main():
|
||
|
"""Call average module to find median of a specific list of numbers."""
|
||
|
print("Odd number of numbers:")
|
||
|
print(median([2, 4, 6, 8, 20, 50, 70]))
|
||
|
print("Even number of numbers:")
|
||
|
print(median([2, 4, 6, 8, 20, 50]))
|
||
|
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
main()
|