如何在列表中找到第二大数字?

Man*_*ter 2 python list max

所以我必须从列表中找到第二大数字.我是通过简单的循环来完成的.

我的方法是将列表分成两部分,然后将最大数字分成两部分,然后比较两个数字.我将从其中两个中选择较小的数字.我不能使用现成的功能或不同的方法.

基本上,这是我的代码.但它运行不正常

#!/usr/local/bin/python2.7

alist=[-45,0,3,10,90,5,-2,4,18,45,100,1,-266,706]
largest=alist[0]
h=len(alist)/2 
m=len(alist)-h

print(alist)

for i in alist:
    if alist[h]>largest:
      largest=alist[h]
      i=i+1
print(largest)
Run Code Online (Sandbox Code Playgroud)

ins*_*get 11

O(n ^ 2)算法:

In [79]: alist=[-45,0,3,10,90,5,-2,4,18,45,100,1,-266,706]

In [80]: max(n for n in alist if n!=max(alist))
Out[80]: 100
Run Code Online (Sandbox Code Playgroud)

O(n)算法:

In [81]: alist=[-45,0,3,10,90,5,-2,4,18,45,100,1,-266,706]

In [82]: M = max(alist)

In [83]: max(n for n in alist if n!=M)
Out[83]: 100
Run Code Online (Sandbox Code Playgroud)