Python 返回中位数
时间: 2024-12-11 22:12:47 浏览: 10
在Python中计算列表的中位数可以采用不同的方法,这里有两个示例:
**方法一**[^1]:
```python
def median(numbers):
return (sorted(numbers)[int(round((len(numbers) - 1) / 2.0))] + sorted(numbers)[int(round((len(numbers) - 1) // 2.0))]) / 2.0
```
这个函数首先对输入的数字列表进行排序,然后确定中间位置(如果列表长度为奇数)或中间两个位置(如果长度为偶数),并返回它们的平均值作为中位数。
**方法二**:
```python
def median(lst):
n = len(lst)
if n < 1:
return None
if n % 2 == 1: # 奇数个元素
return sorted(lst)[n//2]
else: # 偶数个元素
return sum(sorted(lst)[n//2-1:n//2+1])/2.0
```
这个函数同样先检查列表长度,如果是奇数则直接取中间位置的元素,如果是偶数则取中间两个元素的平均值作为中位数。
相关问题
python,中位数函数
在Python中,计算列表或其他可迭代对象的中位数通常需要先对数据进行排序,因为中位数是对一组数值的中间值进行描述的,而未排序的数据可能无法直接确定中间位置。你可以使用内置的`sorted()`函数对数据进行排序,然后再选择中间的那个元素。如果元素的数量是奇数,那么中位数就是排序后的数组的正中间那个数;如果是偶数,则中位数是中间两个数的平均值。
如果你想要避免排序,可以使用`heapq`模块的`nlargest`和`nsmallest`函数配合使用。首先找到中间两个数的位置(对于偶数长度的列表,这将是中间两个数),然后分别从原列表中取出这两个数并求平均。
这里有一个简单的例子:
```python
import statistics
import heapq
def median(lst):
sorted_lst = sorted(lst)
n = len(sorted_lst)
if n % 2 == 0:
# 对于偶数长度,取中间两个数的平均值
return (sorted_lst[n//2 - 1] + sorted_lst[n//2]) / 2
else:
# 对于奇数长度,直接返回中间的一个数
return sorted_lst[n//2]
# 或者使用statistics模块的median函数,更简洁
# median_num = statistics.median(lst)
lst = [4, 2, 9, 6, 5]
print(median(lst)) # 输出:5
python求中位数的代码
以下是Python中求中位数的代码示例:
```python
def median(numbers):
sorted_numbers = sorted(numbers)
length = len(sorted_numbers)
if length % 2 == 0:
return (sorted_numbers[length // 2 - 1] + sorted_numbers[length // 2]) / 2
else:
return sorted_numbers[length // 2]
```
该函数接受一个数字列表,返回其中位数。如果列表长度为偶数,则返回中间两个数的平均值;如果列表长度为奇数,则返回中间的数。
阅读全文