📜  Python|累积记录的数学中位数

📅  最后修改于: 2022-05-13 01:54:59.808000             🧑  作者: Mango

Python|累积记录的数学中位数

有时,在使用Python元组列表时,我们可能会遇到需要在列表中找到元组值的中位数的问题。这个问题在包括数学在内的许多领域都有可能的应用。让我们讨论可以执行此任务的某些方式。

方法#1:使用循环+ "~" operator
可以使用上述功能的组合以蛮力方式执行此任务。在此,我们对列表进行排序,并通过使用“~”运算符的属性进行取反,我们在展平后从前后访问列表,执行查找中位数所需的计算。

# Python3 code to demonstrate working of 
# Mathematical Median of Cumulative Records
# Using loop + "~" operator 
  
# initializing list 
test_list = [(1, 4, 5), (7, 8), (2, 4, 10)]
  
# printing list 
print("The original list : " + str(test_list)) 
  
# Mathematical Median of Cumulative Records 
# Using loop + "~" operator 
res = []
for sub in test_list :
  for ele in sub :
    res.append(ele)
res.sort() 
mid = len(res) // 2
res = (res[mid] + res[~mid]) / 2
  
# Printing result 
print("Median of Records is : " + str(res)) 
输出 :
The original list : [(1, 4, 5), (7, 8), (2, 4, 10)]
Median of Records is : 4.5

方法#2:使用chain() + statistics.median()
这是执行此任务的最通用方法。在此,我们在使用chain() 进行展平后直接使用内置函数来执行展平列表的中值。

# Python3 code to demonstrate working of 
# Mathematical Median of Cumulative Records
# Using chain() + statistics.median()
import statistics 
from itertools import chain
  
# initializing list 
test_list = [(1, 4, 5), (7, 8), (2, 4, 10)] 
  
# printing list 
print("The original list : " + str(test_list)) 
  
# Mathematical Median of Cumulative Records
# Using chain() + statistics.median()
temp = list(chain(*test_list)) 
res = statistics.median(temp) 
  
# Printing result 
print("Median of Records is : " + str(res)) 
输出 :
The original list : [(1, 4, 5), (7, 8), (2, 4, 10)]
Median of Records is : 4.5