Python OJ题:快速求出现次数最多的数字

简介: 本文主要介绍了如何使用Python collections 模块中的 Counter 类来找到列表中出现最多的数字

例题

问题描述

景区在售票时,从游客身份证中提取了年龄信息。现在,景区管理员想知道,按年龄统计,游客数量最多的是什么年龄?

输入

只有一行,n 个游客年龄数据,数据为整数,两个数据之间有一个空格

输出

第一行:输出最多游客数量的年龄,相同数量的,优先输出年龄大的

第二行:输出最多游客的数量

样例

35 40 80 40 40 40 35 40 15 20
40
5

分析

要解决这道题,我们只需要创建一个列表,记录游客的年龄信息,然后找到列表中元素出现的频次,并找出出现次数最多的元素及其对应的出现次数

那么我们可以通过Python collections 模块中的 Counter 类来快速找到列表中出现最多的数字

Counter 是一个字典子类,用于计数可哈希对象(如本题中列表中的元素)的数量

实现

我们首先创建一个 Counter 对象 c,通过传入列表 lst 进行初始化。在这个过程中,Counter 对 lst 中的所有元素进行计数,结果是一个字典,其中键是列表中的元素,值是它们在列表中出现的次数

c = Counter(lst)

然后使用 Counter 的 most_common() 方法获取出现次数最多的元素。most_common() 方法返回一个列表,其中包含元组,每个元组包含一个元素及其出现次数,按出现次数从高到低排序

c.most_common(1)[0][0]
c.most_common(1)[0][1]
  • c.most_common(1) 表示我们只需要出现次数最多的那一个元素及其出现次数,因此传入参数 1

  • [0][0][0][1] 分别用于获取这个元组的第一个和第二个元素,也就是出现次数最多的元素及其对应的出现次数

再将出现次数最多的元素赋值给变量 a,出现次数赋值给变量 b

a = c.most_common(1)[0][0]
b = c.most_common(1)[0][1]

最后,分别打印出出现次数最多的元素 a 和其对应的出现次数 b

print(a)
print(b)

但要注意的是,本题中要求相同数量的,优先输出年龄大的。而使用这种方法会优先输出年龄小的,所以我们需要做一些改变

代码示例

from collections import Counter

lst = list(map(int, input().split()))

c = Counter(lst)
max_count = max(c.values())
max_ages = [age for age, count in c.items() if count == max_count]
max_ages.sort(reverse=True)

a = max_ages[0]
b = max_count

print(a)
print(b)
目录
相关文章
|
机器学习/深度学习 Python
Python应用专题 | 15:获取list中出现频数最多的元素
给定一个列表,找到其中最高频的元素?本文以代码的角度进行介绍。
|
9月前
|
数据采集 机器学习/深度学习 人工智能
Python:现代编程的首选语言
Python:现代编程的首选语言
1433 102
|
9月前
|
数据采集 机器学习/深度学习 算法框架/工具
Python:现代编程的瑞士军刀
Python:现代编程的瑞士军刀
480 104
|
9月前
|
人工智能 自然语言处理 算法框架/工具
Python:现代编程的首选语言
Python:现代编程的首选语言
371 103
|
9月前
|
机器学习/深度学习 人工智能 数据挖掘
Python:现代编程的首选语言
Python:现代编程的首选语言
395 82
|
8月前
|
Python
Python编程:运算符详解
本文全面详解Python各类运算符,涵盖算术、比较、逻辑、赋值、位、身份、成员运算符及优先级规则,结合实例代码与运行结果,助你深入掌握Python运算符的使用方法与应用场景。
490 3
|
8月前
|
数据处理 Python
Python编程:类型转换与输入输出
本教程介绍Python中输入输出与类型转换的基础知识,涵盖input()和print()的使用,int()、float()等类型转换方法,并通过综合示例演示数据处理、错误处理及格式化输出,助你掌握核心编程技能。
715 3
|
8月前
|
并行计算 安全 计算机视觉
Python多进程编程:用multiprocessing突破GIL限制
Python中GIL限制多线程性能,尤其在CPU密集型任务中。`multiprocessing`模块通过创建独立进程,绕过GIL,实现真正的并行计算。它支持进程池、队列、管道、共享内存和同步机制,适用于科学计算、图像处理等场景。相比多线程,多进程更适合利用多核优势,虽有较高内存开销,但能显著提升性能。合理使用进程池与通信机制,可最大化效率。
525 3
|
8月前
|
Java 调度 数据库
Python threading模块:多线程编程的实战指南
本文深入讲解Python多线程编程,涵盖threading模块的核心用法:线程创建、生命周期、同步机制(锁、信号量、条件变量)、线程通信(队列)、守护线程与线程池应用。结合实战案例,如多线程下载器,帮助开发者提升程序并发性能,适用于I/O密集型任务处理。
734 0