2015-11-02 52 views
-2
def second_highest(list): 
""" (list of int) -> int 

如何在不使用remove,pop或sort(我嘗試過)的情況下從整數列表中找到第二高的值,因爲我需要稍後使用相同的列表? 不會有重複的數字。Python:如何找到列表中第二高的數字?

我試圖刪除使用max,排序列表的最高數字,但由於這些變異列表,我不能使用它們。

ex。

​​

預先感謝您!

+0

你應該真的顯示一些代碼沒有人會在這裏爲你做,但你知道如何找到最大的元素?如果你這樣做,你可以用同樣的方法做這個問題,但爲第二大元素添加另一個變量。 – JackVanier

+0

你似乎忘了在你的問題中包含一個問題。 – Biffen

+0

這聽起來像作業。你有什麼嘗試?向我們展示一些代碼。首先在概念上講解事情:要知道第二高的數字,你首先要知道什麼?可能是最高的數字。你怎麼找到的? – Tgsmith61591

回答

4

使用內置sorted OY mylist,這將不會修改mylist(感謝@Tofystedeth)

mylist = [1, 2, 8, 3, 12] 
print(sorted(mylist, reverse=True)[1]) 
+0

他沒有提到他不想使用任何排序? – mic4ael

+1

排序已經返回一個新列表。在mylist本身而不是mylist [:]上使用它應該是安全的。 mylist.sort()將是實際修改mylist的那個。 – Tofystedeth

2
data = [1,2,8,3,12] 

largest = None 
second_largest = None 

for a in data: 
    if not largest or a > largest: 
     if largest: 
      second_largest = largest 
     largest = a 

print("largest: {}".format(largest)) 
print("second_largest: {}".format(second_largest)) 
0

你應該在列表中找到最大和保存它的索引。然後使用remove()函數將其從列表中刪除,然後查找新列表的最大值(刪除原始最大值),這將是您的第二高元素。然後,您可以使用insert()方法將原始最大值添加回列表中。

0
arr = [2, 3, 4, 2, 4, -3, 43, -4, -25, 45, 9] 
my_list = list(set(arr)) 
my_list.sort() 
if len(my_list) == 1: 
    print(my_list[0]) 
elif len(my_list) >= 2: 
    print(my_list[-2]) 
相關問題