|
计算列表中出现次数超过该列表长度一半的元素
解此题的核心在于需要统计出列表中每个元素出现的次数,统计出现的次数既可以使用列表的count()方法,也可以自定义函数,通过使用“循环+判断”的方法来统计元素出现的次数。
(1)使用自定义函数。
解析代码如下:
- def moreThanHalfNum(lt):
- # 定义字典,其中,键用于保存列表中的元素,键的值用于保存该元素出现的次数
- dt = {}
- # 用于保存出现次数最多的元素
- maxNum = None
- # 计算列表的长度
- listCount = len(lt)
- # 对列表进行遍历
- for num in lt:
- # 判断当前字典中是否有该元素,如果没有,则将元素作为字典的键存入,并将值设为1,代表第一次出现,如果字典中该元素已经存在,则对该元素在字典中的值做加1操作
- if dt.get(num) is None:
- dt[num] = 1
- # 将列表中第一个元素赋值给maxNum
- if maxNum == None:
- maxNum = num
- else:
- dt[num] += 1
- # 判断列表中两个元素出现的次数,出现次数多的元素,将其值赋给maxNum
- if num != maxNum and dt.get(num) > dt.get(maxNum):
- maxNum = num
- # 判断当前元素出现的次数是否大于列表长度的一半
- if dt.get(maxNum) > listCount // 2:
- return maxNum
- return '该列表中无符合要求元素!'
- print(moreThanHalfNum([5, 5, 4, 3, 5, 3, 2, 5, 5, 5, 5, 7, 7]))
复制代码 (2)使用count()方法。
解析代码如下:
- def moreThanHalfNum(lt):
- length = len(lt) // 2
- for num in lt:
- if lt.count(num) > length:
- return num
- return '该列表中无符合要求元素!'
- print(moreThanHalfNum([5, 5, 4, 3, 5, 3, 2, 5, 5, 5, 5, 7, 7]))
复制代码 |
|