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