python实现找到列表中第二大的数字
'''给定一个长度大于3的列表,里面数字是无序的,且数字不重复,如何找到第二大的数字?
例如列表a = [1, 3, 6, 2, 7, 9],找到的结果就应该是:7
下面给出六种解决方案'''
a = [1, 3, 6, 2, 7, 9]
# 以下是使用内置方法的策略
# 1 使用sorted排序,再取倒数第二个下标值
print(sorted(a)[-2])
# 2 使用sort排序,再取倒数第二个下标值
a.sort()
print(a[-2])
# 3 先取出最大值,删除,再取最大值
max_num = max(a)
a.remove(max_num)
print(max(a))
# 以下是不使用内置方法的策略
# 4 使用两个for循环,第一个先找最大值,删除最大值,然后再找最大值
1 2 3 4 5 6 7 8 9 10 11 | def get_second_max_num(a) num = a[ 0 ] for i in a: if i > num: num = i a.remove(num) res = a[ 0 ] for j in a: if j > res: res = j return res |
# 5 使用两个数字分别表示最大数和第二大数,然后一次for循环进行遍历,比较后再进行赋值
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | def get_second_max_num2(a) le = len (a) if a[ 0 ] > a[ 1 ]: max_num = a[ 0 ] second_max_num = a[ 1 ] else : max_num = a[ 1 ] second_max_num = a[ 0 ] for i in range ( 2 , le): if a[i] > max_num: second_max_num = max_num max_num = a[i] else : if a[i] > second_max_num: second_max_num = a[i] return second_max_num |
# 6 使用两个数字分别表示最大数和第二大数,然后一次while循环进行遍历,比较后再进行赋值
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | def get_second_max_num3(a) le = len (a) if a[ 0 ] > a[ 1 ]: max_num = a[ 0 ] second_max_num = a[ 1 ] else : max_num = a[ 1 ] second_max_num = a[ 0 ] i = 2 while i < le: if a[i] > max_num: second_max_num = max_num max_num = a[i] else : if a[i] > second_max_num: second_max_num = a[i] i + = 1 return second_max_num |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了