仅使用 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
遍历数字时-
- 如果我们遇到的数字大于目前看到的最大数字,请更新最大数字和 second-max 数字
- 否则,如果我们遇到大于 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) > 2
和second_highest([2, 2, 1]) -> 2
,如果你想要它是1
,你可以将第二个elif
条件替换为elif second < x and first != x
.
我需要两种不同的方法来从列表中获取 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
遍历数字时-
- 如果我们遇到的数字大于目前看到的最大数字,请更新最大数字和 second-max 数字
- 否则,如果我们遇到大于 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) > 2
和second_highest([2, 2, 1]) -> 2
,如果你想要它是1
,你可以将第二个elif
条件替换为elif second < x and first != x
.