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