给定一个列表,找出列表第二大的值
思路:考虑列表是可能是乱序列表,并且可能存在两个相等的最大值的情况。...s1 = [34,33,2,1,6,7,7,44,3,23,23]
解法1:去重(解决可能存在两个相等的最大值),然后使用sort排序,然后然后通过切片取到第二大的值。...如果先排序再去重可能会打乱序列
s1 = [34,33,2,1,6,7,7,44,3,23,23]
s2 = list(set(s1))
s2.sort()
print(s2[-2])
#s2[-2]即为列表第二大的值...解法2:自己定义2个变量,与列表中的值一一对比,考虑对比的i的值大于最大值,以及处于最大值与第二大值之间的情况
def find_the_second_max_value(s):
if isinstance...2,1,6,33,7,7,44,3,23,23,34]
一直比较到最后一位数,那么s1[0]和所有的数都比较了,第二轮比较结果为s1 = [2,1,6,7,7,44,3,23,23,33,34],需要注意的一点是第二轮比较的步数应该比第一轮比较的步数少