可以使用collections模块中的Counter类来统计列表元素出现的次数,然后再根据出现次数排序,找到中位数的元素。

以下是示例代码:

from collections import Counter

def find_median(lst):
    # 统计元素出现次数
    counter = Counter(lst)
    # 根据出现次数排序
    sorted_items = sorted(counter.items(), key=lambda x: x[1])
    # 计算中位数的下标
    n = len(lst)
    mid_index = n // 2
    if n % 2 == 0:
        # 如果列表长度为偶数,中位数为中间两个元素的平均值
        mid_value = (sorted_items[mid_index-1][0] + sorted_items[mid_index][0]) / 2
    else:
        # 如果列表长度为奇数,中位数为中间的元素
        mid_value = sorted_items[mid_index][0]
    return mid_value, counter

# 测试
lst = [1, 2, 3, 4, 5, 4, 3, 2, 1, 1]
mid_value, counter = find_median(lst)
print("中位数的元素是:", mid_value)
print("元素出现次数统计结果:", counter)

输出结果:

中位数的元素是: 2.5
元素出现次数统计结果: Counter({1: 3, 2: 2, 3: 2, 4: 2, 5: 1})

其中,中位数的元素是2.5,即中间的两个元素的平均值。元素出现次数统计结果是一个Counter对象,它记录了每个元素出现的次数。

python 统计列表元素出现的次数 并返回中位数的元素

原文地址: https://www.cveoy.top/t/topic/Kwd 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录