所以我得从名单上找出第二大数字。我是通过简单的循环来做的。
我的方法是将一个列表分成两部分,然后将最大的数字分成两部分,然后比较两个数字。我将从其中两个中选择较小的数字。我不能使用现成的函数或不同的方法。
基本上,这是我的代码。但它不能正常运行

#!/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)

最佳答案

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

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

关于python - 如何在列表中找到第二大数字?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19697504/

10-12 16:32