求列表的最大数以及下标 | 学习笔记

简介: 快速学习 求列表的最大数以及下标

开发者学堂课程【Python入门 2020年版求列表的最大数以及下标】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/639/detail/10302


求列表的最大数以及下标


内容介绍

一、求列表里的最大数

二、求最大数的下标


一、求列表里的最大数

求解的方法众多,只要答案能够求解即可

1.  方法一

可以先使用 sort 将其排序,变为从小到大,再输出最后一个元素,即最大值。

代码:

nums =[3,1, 9, 8, 4, 2 ,0 , 75]

nums . sort()

print(nums)

print(nums[-1])

输出结果

[012345789]

9

2.  方法二

使用 sort( reverse=True)将其变为降序输出,取第一个元素输出,即最大值。升序取最后一个,降序取第一个,以此能够实现排完序后取得最大值。

代码:

nums =[3,1, 9, 8, 4, 2 ,0 , 75]

nums . sort( reverse=True)

print(nums)

print( nums[0])

输出结果

[987654321]

9

3.  方法三

将假设值的初始值设为列表的第一个数 a[0],遍历这个列表 nums,拿出列表中的每一个数进行判断,如果列表中存在比假设还要大的数字,说明假设不成立,所以将假设的值设为发现的数字 x=num,最后打印输出当前比较完毕的假设值。

代码:

nums =[3,1, 9, 8, 4, 2 ,0 , 75]

x = nums[0] #假设第0个是最大数

for num in nums ://遍历循环进行比较假设值和列表值

if num > x:

#如果发现列表里存在比假设还要大的数字

#说明假设不成立,把假设的值设置为发现的数字

x= num

print("发现的最大数是%d% ×)

输出结果

发现的最大数是9

(1)  思路解析:

假设不适用排序的方法,需要找最大数,我们可以假设一个变量x为最大数0,我们将假设的最大数依次和列表里的数相比较。当发现列表里的某个数比假设的数更大,说明假设不成立,所以改变假设的数值为列表中的数。即将0变为3

之后再将3与下一个数1进行比较,3更大,所以不交换。再与9做比较,发现9大于3所以假设不成立,,将3变为9,继续依次与列表中的数做比较,发现都小于当前的最大值9,假设值都不进行变化,所以列表中的最大值9就被拿出来了。

即只要发现列表的数大于假设的最大值,说明假设错误把假设值改掉。

1.png

1.png

1.png

(2)  错误分析:假设值初始值大于列表值

但此时的假设值不应为0,因为如果列表中的值为负数。那么假设值始终大于列表的值,就不会进行交换,所以无法判断出列表最大值。

1.png

3)解决方案--求列表的第一个元素 a[0]

要避免取得的最大值并不在列表元素中这个问题,我们可以通过改变假设值为列表中的任意数值,如 x=a[5]

但列表的长度也可能没有 a[5]这个元素,所以我们选择将假设值的初始值设为列表的第一个数 a[0],因为要进行比较求最大值,那么列表必然有1个数值以上,否则将无法进行比较。

1.png

4)总结:

任意假设一个最大值,再依次将其对列表中的值进行比较,若假设最大值小于列表值,则更改为列表值。

若假设值大于列表值,则假设最大值不变化对下一个列表值进行比较,直到比较完毕,假设值最终结果即列表最大值,同时注意假设值为列表的第一个数 a[0],以防止出现错误。


二、求最大数的下标

1.使用自带的 index 方法

在求最大数的基础上,求最大数的下标。只需要使用 nums.indexx)调用 index 方法即可。

代码

nums =[3,1, 9, 8, 4, 2 ,0 , 75]

x=nums[0] #假设第0个是最大数

for num in nums :  //遍历循环进行比较假设值和列表值

if num > x:

#如果发现列表里存在比假设还要大的数字

#说明假设不成立,把假设的值设置为发现的数字

x= num

print(发现的最大数是%d,它的下标是%d’ %(x, nums.index(x)))

输出结果

发现的最大数是9,它的下标是2

2. 不使用 index 方法

如果不使用自带的 index 方法,自己求下标。那么可以再假设一个最大数的下标值,初始值为0

for 循环变为 i 循环,是其能够得到下标值,i表示第几个数据,nums[i]表示当前数值。

代码

nums =[3,1, 9, 8, 4, 2 ,0 , 75]

x = nums[0]

index=0

i = 0

while i < len(nums )://遍历循环进行比较假设值和列表值

if nums[i]> x:    //如果发现列表里存在比假设还要大的数字

× = nums[i]  //说明假设不成立,把假设的值设置为发现的数字

Index=i//同时把下标换成i

i += 1

print(‘发现的最大数是%d,它的下标是%d’ % (x,i)

输出结果

发现的最大数是9,它的下标是2

(1) 思路解析:

刚开始假设列表第一个数 a[0]为最大值,之后在比较时,发现列表中的数字9比假设值还要大,就把假设最大值换成9,同时将假设最大值的下标0也换成9对应的下标。

1.png

相关文章
|
4天前
|
数据采集 人工智能 安全
|
13天前
|
云安全 监控 安全
|
5天前
|
自然语言处理 API
万相 Wan2.6 全新升级发布!人人都能当导演的时代来了
通义万相2.6全新升级,支持文生图、图生视频、文生视频,打造电影级创作体验。智能分镜、角色扮演、音画同步,让创意一键成片,大众也能轻松制作高质量短视频。
1092 152
|
18天前
|
机器学习/深度学习 人工智能 自然语言处理
Z-Image:冲击体验上限的下一代图像生成模型
通义实验室推出全新文生图模型Z-Image,以6B参数实现“快、稳、轻、准”突破。Turbo版本仅需8步亚秒级生成,支持16GB显存设备,中英双语理解与文字渲染尤为出色,真实感和美学表现媲美国际顶尖模型,被誉为“最值得关注的开源生图模型之一”。
1768 9
|
10天前
|
人工智能 自然语言处理 API
一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸
一句话生成拓扑图!next-ai-draw-io 结合 AI 与 Draw.io,通过自然语言秒出架构图,支持私有部署、免费大模型接口,彻底解放生产力,绘图效率直接爆炸。
700 152
|
12天前
|
人工智能 安全 前端开发
AgentScope Java v1.0 发布,让 Java 开发者轻松构建企业级 Agentic 应用
AgentScope 重磅发布 Java 版本,拥抱企业开发主流技术栈。
663 13
|
7天前
|
SQL 自然语言处理 调度
Agent Skills 的一次工程实践
**本文采用 Agent Skills 实现整体智能体**,开发框架采用 AgentScope,模型使用 **qwen3-max**。Agent Skills 是 Anthropic 新推出的一种有别于mcp server的一种开发方式,用于为 AI **引入可共享的专业技能**。经验封装到**可发现、可复用的能力单元**中,每个技能以文件夹形式存在,包含特定任务的指导性说明(SKILL.md 文件)、脚本代码和资源等 。大模型可以根据需要动态加载这些技能,从而扩展自身的功能。目前不少国内外的一些框架也开始支持此种的开发方式,详细介绍如下。
455 5