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