仅使用 for 循环和 Len() 方法返回列表中第二高的元素

Returning second highest element of a list using just a for loop and Len() method

我需要两种不同的方法来从列表中获取 int 的第二大值,仅使用一个 for 循环和 Len() 方法。我的方法不允许使用其他功能。


sorted(numbers)[-2]

这是我的方法,但如您所见,我使用了另一个函数,而不仅仅是 for 循环和 Len()

如何仅使用允许的函数获得与上述代码相同的结果。

您可以使用以下功能-

def second_highest(nums):
    first = second = float('-inf')
    for x in nums:
        if first < x:
            second, first = first, x
        elif second < x:
            second = x
    return second

遍历数字时-

  1. 如果我们遇到的数字大于目前看到的最大数字,请更新最大数字和 second-max 数字
  2. 否则,如果我们遇到大于 second-max 数字但小于最大数字的数字,则仅更新 second-max 数字
>>> second_highest([1, 2, 3, 7, 9, 15, 4, 8 ])
9
>>> second_highest([15, 2, 3, 7, 9, 15, 4, 8 ])
15

以上是假设len(nums) > 2second_highest([2, 2, 1]) -> 2,如果你想要它是1,你可以将第二个elif条件替换为elif second < x and first != x .