TheAlgorithms-Python
41 строка · 804.0 Байт
1from __future__ import annotations
2
3
4def median(nums: list) -> int | float:
5"""
6Find median of a list of numbers.
7Wiki: https://en.wikipedia.org/wiki/Median
8
9>>> median([0])
100
11>>> median([4, 1, 3, 2])
122.5
13>>> median([2, 70, 6, 50, 20, 8, 4])
148
15
16Args:
17nums: List of nums
18
19Returns:
20Median.
21"""
22# The sorted function returns list[SupportsRichComparisonT@sorted]
23# which does not support `+`
24sorted_list: list[int] = sorted(nums)
25length = len(sorted_list)
26mid_index = length >> 1
27return (
28(sorted_list[mid_index] + sorted_list[mid_index - 1]) / 2
29if length % 2 == 0
30else sorted_list[mid_index]
31)
32
33
34def main():
35import doctest
36
37doctest.testmod()
38
39
40if __name__ == "__main__":
41main()
42