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

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

开发者学堂课程【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月前
|
算法
【LeetCode】每日一题&&两数之和&&寻找正序数组的中位数&&找出字符串中第一个匹配项的下标&&在排序数组中查找元素的第一个和最后一个位置
【LeetCode】每日一题&&两数之和&&寻找正序数组的中位数&&找出字符串中第一个匹配项的下标&&在排序数组中查找元素的第一个和最后一个位置
|
1月前
数组地址等于第一个元素地址
数组地址等于第一个元素地址
|
3月前
|
存储 算法 Java
数据结构和算法面试题:给定一个整数数组 nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
数据结构和算法面试题:给定一个整数数组 nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
41 0
|
8月前
7-10 求最大值及其下标
本题要求编写程序,找出给定的n个数中的最大值及其对应的最小下标(下标从0开始)。
81 0
|
9月前
定义一个包含10个整数元素的数组,初始值由用户给定。找出数组中的最大数并连同下标一起输出。
定义一个包含10个整数元素的数组,初始值由用户给定。找出数组中的最大数并连同下标一起输出。
146 0
|
10月前
|
人工智能
求数组满足条件个数
求数组满足条件个数
59 0
【LeetCode】错误的集合&&在排序数组中查找元素的第一个和最后一个位置&&杨氏矩阵&&寻找数组的中心下标&&两个数组的交集
【LeetCode】错误的集合&&在排序数组中查找元素的第一个和最后一个位置&&杨氏矩阵&&寻找数组的中心下标&&两个数组的交集
【LeetCode】错误的集合&&在排序数组中查找元素的第一个和最后一个位置&&杨氏矩阵&&寻找数组的中心下标&&两个数组的交集
|
算法
Day1——数组 二分查找、移除一个数
Day1——数组 二分查找、移除一个数
87 0
Day1——数组 二分查找、移除一个数
给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 子数组 是数组中的一个连续部分。
给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 子数组 是数组中的一个连续部分。
474 0