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

  

posted @   漫途测开  阅读(565)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示