开发者学堂课程【Python入门 2020年版:求列表的最大数以及下标】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/639/detail/10302
求列表的最大数以及下标
内容介绍
一、求列表里的最大数
二、求最大数的下标
一、求列表里的最大数
求解的方法众多,只要答案能够求解即可
1. 方法一
可以先使用 sort 将其排序,变为从小到大,再输出最后一个元素,即最大值。
nums =[3,1, 9, 8, 4, 2 ,0 , 7
,5]
nums . sort()
print(nums)
print(nums[-1])
输出结果
[0,1,2,3,4,5,7,8,9]
9
2. 方法二
使用 sort( reverse=True)将其变为降序输出,取第一个元素输出,即最大值。升序取最后一个,降序取第一个,以此能够实现排完序后取得最大值。
代码:
nums =
[3,1, 9, 8, 4, 2 ,0 , 7
,5]
nums . sort( reverse=True)
print(nums)
print( nums[0])
输出结果
[9,8,7,6,5,4,3,2,1]
9
3. 方法三
将假设值的初始值设为列表的第一个数 a[0],遍历这个列表 nums,拿出列表中的每一个数进行判断,如果列表中存在比假设还要大的数字,说明假设不成立,所以将假设的值设为发现的数字 x=num,最后打印输出当前比较完毕的假设值。
代码:
nums =[3,1, 9, 8, 4, 2 ,0 , 7
,5]
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就被拿出来了。
即只要发现列表的数大于假设的最大值,说明假设错误把假设值改掉。
(2) 错误分析:假设值初始值大于列表值
但此时的假设值不应为0,因为如果列表中的值为负数。那么假设值始终大于列表的值,就不会进行交换,所以无法判断出列表最大值。
(3)解决方案--求列表的第一个元素 a[0]
要避免取得的最大值并不在列表元素中这个问题,我们可以通过改变假设值为列表中的任意数值,如 x=a[5]。
但列表的长度也可能没有 a[5]这个元素,所以我们选择将假设值的初始值设为列表的第一个数 a[0],因为要进行比较求最大值,那么列表必然有1个数值以上,否则将无法进行比较。
(4)总结:
任意假设一个最大值,再依次将其对列表中的值进行比较,若假设最大值小于列表值,则更改为列表值。
若假设值大于列表值,则假设最大值不变化对下一个列表值进行比较,直到比较完毕,假设值最终结果即列表最大值,同时注意假设值为列表的第一个数 a[0],以防止出现错误。
二、求最大数的下标
1.使用自带的 index 方法
在求最大数的基础上,求最大数的下标。只需要使用 nums.index(x)调用 index 方法即可。
代码
nums =[3,1, 9, 8, 4, 2 ,0 , 7
,5]
x=nums[0]
#假设第0个是最大数
for num in nums :
//遍历循环进行比较假设值和列表值
if num > x:
#如果发现列表里存在比假设还要大的数字
#说明假设不成立,把假设的值设置为发现的数字
x= num
print(
‘
发现的最大数是%d,它的下标是%d’ %(x, nums.index(x)))
输出结果
2. 不使用 index 方法
如果不使用自带的 index 方法,自己求下标。那么可以再假设一个最大数的下标值,初始值为0。
将 for 循环变为 i 循环,是其能够得到下标值,i表示第几个数据,nums[i]表示当前数值。
代码
nums =[3,1, 9, 8, 4, 2 ,0 , 7
,5]
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对应的下标。