python 求数组中的第二大的数的多种方法总结与详解

本文总结了在Python中求解数组第二大值的三种方法,包括排序加判断、去重排序以及自定义排序。针对数组可能存在的多个最大值情况进行了优化,详细解析了每种方法的思路和实践过程。
部署运行你感兴趣的模型镜像

问题:对于一列数,求出其中的第二大值。


一、求数组中第二大值的错误方式(常见)

查看了很多资料,很多博客主要介绍的方法和思路有以下2种:

但是很少考虑数组中的最大值是否唯一。当数组的有多个最大值时,需要判断并进行优化。当数组中有多个最大值或者不确定最大值是否唯一时,需要进行改进优化。

错误案例

(1) sorted()先对数据递增排序后,取倒数第二个数。
    ——只适用于数组只有唯一一个最大值,当数组含有多个最大值时不适用。

数组只有一个最大值时:正确。
在这里插入图片描述
在这里插入图片描述

数组含有多个最大值时:结果错误。
 在这里插入图片描述
在这里插入图片描述
(2)自定义函数. 例如:https://blog.youkuaiyun.com/together_cz/article/details/77771125
   
   由此可以看出:当数组中有多个最大值或者不确定最大值是否唯一时,需要进行改进优化。


二、如何求数组中的第二大的数?

在考虑数组可能含有多个最大值的情况下,如何正确找到数据的第二大值?总结了以下三种方式:

  • 方法1:排序+判断数组有无第二大值
  • 方法2:将数组转化为集合去重+排序+取值
  • 方法3:自定义排序
1. 方法一:排序+判断数组有无第二大值+取值
(1)思路
  • step1:找出数据中最大数的个数,记为x
  • step2:判断数组中最大值的个数与数据元素个数的关系:
      若数组中最大数的个数 == 数组元素的个数:则数组中的元素都是最大值,因此数组没有第二大值;
      若数组中最大数的个数< 数组元素的个数:数组中存在第二大的数,且对数组排序后,第二大数的位置是:-1-x
(2)实践:

在这里插入图片描述
输出的结果如下:
在这里插入图片描述

2. 方法二:列表元素去重+排序+取值

列表元素去重可以用2种简单方式:

  • (1)将列表转化为集合
  • (2)导入numpy包,使用np.unique()函数

A. 将列表转为结集合:在这里插入图片描述
输出的结果为:
在这里插入图片描述
此时,不对集合判断元素个数也是可以的,当取值位置不存在时,运行程序会报错。

B. 使用np.unique()进行去重:
在这里插入图片描述
输出的结果为:
在这里插入图片描述

3. 方法三:自定义排序

在这里插入图片描述
输出的结果为:
在这里插入图片描述

ps:文中python代码的链接地址:https://download.youkuaiyun.com/download/Anny_Song/12042828

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值