首页 > 解决方案 > 列表中重复次数最多的元素

问题描述

我正在尝试创建一个函数来查找列表中重复次数最多的元素。我想遍历列表,检查每个元素的计数并比较它们(使用 2 个变量numnumnumnum2

出了点问题,它总是打印 6。

l1 = [1, 5, 7, 7, 7, 7, 7, 7, 7, 7, 1, 3, 6, 6, 3, 4, 2, 6]

print(l1)


def mostrepeating(list1=None):
    if list1 is None:
        print('No list was received in the function.')
    else:
        numnum, numnum2, result = 0, 0, 0
        for num in list1:
            if list1.index(num) == 0:
                numnum = list1.count(num)
                result = num
            else:
                numnum2 = list1.count(num)
                if numnum2 > numnum:
                    result = num
                    numnum = numnum2
        print(result)


mostrepeating(l1)

标签: pythonpython-3.xlistfunction

解决方案


问题在于if list1.index(num) == 0,它重置results为 1,失去了先前的计数。将其删除并设置result为列表中的第一项。为了减少迭代,您还应该迭代set数字

def mostrepeating(list1=None):
    if list1 is None:
        print('No list was received in the function.')
    else:
        numnum, numnum2, result = 0, 0, 0
        s = set(l1)
        result = list1[0]
        for num in s:
            numnum2 = list1.count(num)
            if numnum2 > numnum:
                result = num
                numnum = numnum2
        print(result)

推荐阅读