6 Réponses
+ 3
you can do it in a way like this:
x=[3,7,8,6]
x.remove(max(x))
print(max(x))
#output is 7
+ 2
If your list is sorted, you don't have to iterate over all element to find the nth-max...
if increasing order mx2 = list[-2]
if decreasing order mx2 = list[1]
... until you've only uniques elements in the list.
If values can be repeated in the list, you need to iterate only over a list subpart:
def mx2(list,inc=True):
i = len(list)-1 if inc else 0
inc = -1 if inc else 1
M = list[i]
try:
while list[i]==M: i += inc
except Exception:
return None
return list[i]
+ 1
x = list(set([1, 4, 2, 4, 6]))
print(x[-2])
hehe
0
>>> a = [1,2,4,5,6,72,1,3]
>>> sorted(a)[-2:-1]#start 2 position from left, stop in position from end
[6]#returns array
>>> sorted(a)[-2:-1][0]#pick first element
6
>>>
0
v0ltr0n no needs to slice before accessing the targeted value...
Francis Sullano using a set imply implicitly to iterate over the whole list (wich could be time expensive for large list and/or numerous call) ;)
0
mylist = [1, 1, 2, 2, 3, 3, 10, 10, 4, 4, 8, 8, 6, 6, 7, 7, 5, 5, 9, 9]
print(sorted(set(mylist))[-2])