def second_highest(list):
""" (list of int) -> int
如何在不使用remove,pop或sort(我嘗試過)的情況下從整數列表中找到第二高的值,因爲我需要稍後使用相同的列表? 不會有重複的數字。Python:如何找到列表中第二高的數字?
我試圖刪除使用max,排序列表的最高數字,但由於這些變異列表,我不能使用它們。
ex。
預先感謝您!
def second_highest(list):
""" (list of int) -> int
如何在不使用remove,pop或sort(我嘗試過)的情況下從整數列表中找到第二高的值,因爲我需要稍後使用相同的列表? 不會有重複的數字。Python:如何找到列表中第二高的數字?
我試圖刪除使用max,排序列表的最高數字,但由於這些變異列表,我不能使用它們。
ex。
預先感謝您!
使用內置sorted
OY mylist
,這將不會修改mylist
(感謝@Tofystedeth)
mylist = [1, 2, 8, 3, 12]
print(sorted(mylist, reverse=True)[1])
他沒有提到他不想使用任何排序? – mic4ael
排序已經返回一個新列表。在mylist本身而不是mylist [:]上使用它應該是安全的。 mylist.sort()將是實際修改mylist的那個。 – Tofystedeth
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))
你應該在列表中找到最大和保存它的索引。然後使用remove()
函數將其從列表中刪除,然後查找新列表的最大值(刪除原始最大值),這將是您的第二高元素。然後,您可以使用insert()
方法將原始最大值添加回列表中。
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])
你應該真的顯示一些代碼沒有人會在這裏爲你做,但你知道如何找到最大的元素?如果你這樣做,你可以用同樣的方法做這個問題,但爲第二大元素添加另一個變量。 – JackVanier
你似乎忘了在你的問題中包含一個問題。 – Biffen
這聽起來像作業。你有什麼嘗試?向我們展示一些代碼。首先在概念上講解事情:要知道第二高的數字,你首先要知道什麼?可能是最高的數字。你怎麼找到的? – Tgsmith61591