• 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. def get_second_max_num(a)
    2.     num = a[0]
    3.     for i in a:
    4.         if i > num:
    5.             num = i
    6.     a.remove(num)
    7.     res = a[0]
    8.     for j in a:
    9.         if j > res:
    10.             res = j
    11.     return res

    # 5 使用两个数字分别表示最大数和第二大数,然后一次for循环进行遍历,比较后再进行赋值

    1. def get_second_max_num2(a)
    2.     le = len(a)
    3.     if a[0] > a[1]:
    4.         max_num = a[0]
    5.         second_max_num = a[1]
    6.     else:
    7.         max_num = a[1]
    8.         second_max_num = a[0]
    9.     for i in range(2, le):
    10.         if a[i] > max_num:
    11.             second_max_num = max_num
    12.             max_num = a[i]
    13.         else:
    14.             if a[i] > second_max_num:
    15.                 second_max_num = a[i]
    16.     return second_max_num

    # 6 使用两个数字分别表示最大数和第二大数,然后一次while循环进行遍历,比较后再进行赋值

    1. def get_second_max_num3(a)
    2.     le = len(a)
    3.     if a[0] > a[1]:
    4.         max_num = a[0]
    5.         second_max_num = a[1]
    6.     else:
    7.         max_num = a[1]
    8.         second_max_num = a[0]
    9.     i = 2
    10.     while i < le:
    11.         if a[i] > max_num:
    12.             second_max_num = max_num
    13.             max_num = a[i]
    14.         else:
    15.             if a[i] > second_max_num:
    16.                 second_max_num = a[i]
    17.         i += 1
    18.     return second_max_num

  • 相关阅读:
    QT实现TCP通信(服务器与客户端搭建)
    DP之字符串算法
    哪个券商支持网格交易功能,条件单功能强大,交易手续费低
    隔离出来的“陋室铭”
    CommomJS使用介绍_web前端培训
    数字化转型具体包含哪些内容?
    【JVM技术专题】「源码专题」深入剖析JVM的Mutex锁的运行原理及源码实现(底层原理-防面试)
    经典双指针算法试题(二)
    ES6中的WeakMap和WeakSet:特性和用途
    图像上传功能实现
  • 原文地址:https://blog.csdn.net/weixin_42575811/article/details/127113699