Можете просто примерно написать как думать, а то вообще идей нет
задан 6 окт 2019 в 6:26
2
first_max = int(input())
second_max = int(input())
if first_max < second_max:
first_max, second_max = second_max, first_max
element = int(input())
while element != 0:
if element > first_max:
second_max, first_max = first_max, element
elif element > second_max:
second_max = element
element = int(input())
print(second_max)
ответ дан 6 окт 2019 в 6:27
Андрей КрузликАндрей Крузлик
1,2633 золотых знака11 серебряных знаков17 бронзовых знаков
Пожалуй эффективнее всего будет воспользоваться функцией heapq.nlargest():
from heapq import nlargest
res = nlargest(2, items)[1]
ответ дан 6 окт 2019 в 7:14
Можно написать функцию:
def find_maxes(array, count):
# копируем список чтобы не изменить старую
copied_array = array.copy()
maximums = []
if count > len(copied_array):
raise ValueError('Количество не может превышать длину списка')
for _ in range(count):
max_val = max(copied_array) # получаем максимальное значение
copied_array.remove(copied_array) # удаляем его из списка
maximums.append(max_val) # добавляем в наш ожидаемый результат
return maximums
или же можно поступить хитро
def find_maxes(array, count):
if count > len(array):
raise ValueError('Количество не может превышать длину списка')
sorted_array = sorted(array) # отсортировать список
# Забрать последние элементы из спика так как они будут максимальными
return sorted_array[len(array)-count: len(array)]
ответ дан 6 окт 2019 в 6:44
E1mirE1mir
1,89811 серебряных знаков23 бронзовых знака
2
b=[3,5,6,7,7,7]
print(list(set(b))[-2])
функция set позволит создать множество отсортированных по возрастанию отличных друг от друга чисел, функция list позволит создать список и обратиться к предпоследнему (или -2) элементу.
<<6
ответ дан 29 окт 2020 в 21:37
FeToRFeToR
12 бронзовых знака
Когда в списке много элементов, нам может понадобиться найти максимальный или минимальный элемент, и Python значительно упростил нам задачу.
В этой статье мы расскажем, как можно найти второе по величине число в списке Python с помощью следующих принципов:
- Сортировка списка и печать предпоследнего числа списка.
- Удаление максимального элемента.
- Нахождение максимального элемента.
- Перемещение по списку.
Давайте разберем первый подход.
Сортировка списка и печать предпоследнего числа
Следующая программа показывает, как это можно сделать на Python.
Пример –
#program to find the second largest number of list # declaring the list list_val = [20, 30, 40, 25, 10] # sorting the list list_val.sort() #displaying the second last element of the list print("The second largest element of the list is:", list_val[-2])
Выход:
The second largest element of the list is: 30
Объяснение –
- Мы объявили список, из которого хотим изъять второй элемент, начиная с конца списка.
- После этого мы использовали метод сортировки, чтобы все элементы нашего списка располагались в порядке возрастания.
- Теперь мы используем отрицательную индексацию, так как второе по величине число будет на предпоследней позиции.
Второй метод – получить второй по величине элемент списка, удалив максимальный элемент.
Давайте посмотрим, как мы можем это сделать.
Удаление максимального элемента
Пример –
#program to find the second largest number of list # declaring the list list_val = [20, 30, 40, 25, 10] # new_list is a set of list1 res_list = set(list_val) #removing the maximum element res_list.remove(max(res_list)) #printing the second largest element print(max(res_list))
Выход:
30
Объяснение –
Давайте разберемся, что мы сделали в вышеуказанной программе:
- Мы объявили список, из которого хотим изъять второй по величине элемент.
- После этого мы использовали метод set, чтобы взять все уникальные элементы списка.
- Теперь мы используем max(), чтобы получить максимальное значение из списка, а затем удаляем его.
- После этого мы печатаем максимум результирующего списка, который даст нам второе по величине число.
В третьем методе мы будем использовать цикл for и и с его помощью найдем второй максимум из списка.
Нахождение максимального элемента
Пример –
# declaring empty list list_val = [] # user provides the number of elements to be added in the list num_list = int(input("Enter number of elements in list: ")) for i in range(1, num_list + 1): element = int(input("Enter the elements: ")) list_val.append(element) # sort the list list_val.sort() # print second largest element print("Second largest element is:", list_val[-2])
Выход:
Enter number of elements in list: 5 Enter the elements: 10 Enter the elements: 20 Enter the elements: 30 Enter the elements: 40 Enter the elements: 50 The second largest element is: 40
Объяснение –
- Мы объявили пустой список, в который будем вставлять элементы.
- После этого мы просим пользователя предоставить нам количество элементов, которые мы хотели бы добавить в наш список.
- Используем метод сортировки, чтобы все элементы нашего списка располагались в порядке возрастания.
- Теперь мы применим отрицательную индексацию, так как второе по величине число будет на второй последней позиции.
Перемещение по списку
В последней программе мы пройдемся по списку, чтобы найти наибольшее число, а затем с помощью условных операторов найдем второе по величине число в списке.
Следующая программа это проиллюстрирует:
def calc_largest(arr): second_largest = arr[0] largest_val = arr[0] for i in range(len(arr)): if arr[i] > largest_val: largest_val = arr[i] for i in range(len(arr)): if arr[i] > second_largest and arr[i] != largest_val: second_largest = arr[i] return second_largest print(calc_largest([20, 30, 40, 25, 10]))
Выход:
30
Объяснение –
Давайте разберемся, что мы сделали в вышеуказанной программе:
- Первый шаг – создать функцию, которая проверяет наибольшее число из списка, просматривая его.
- В следующем цикле for мы снова просматриваем список для поиска наибольшего числа, но на этот раз исключаем предыдущий, так как здесь наша цель – найти вторую по величине функцию.
- Наконец, мы передаем наш список в функцию.
Итак, в этой статье у нас была возможность подумать нестандартно и открыть для себя несколько новых способов разработки логики поиска второго по величине числа в Python.
Изучаю Python вместе с вами, читаю, собираю и записываю информацию опытных программистов.
You don’t have to sort the input, and this solution runs in O(n). Since your question says you cannot use builtin functions, you can use this
alist=[-45,0,3,10,90,5,-2,4,18,45,100,1,-266,706]
largest, larger = alist[0], alist[0]
for num in alist:
if num > largest:
largest, larger = num, largest
elif num > larger:
larger = num
print larger
Output
100
Keep track of the largest number and the second largest number (larger
variable stores that in the code). If the current number is greater than the largest
, current number becomes the largest
, largest
becomes just larger
.
largest, larger = num, largest
is a shortcut for
temp = largest
largest = num
larger = temp
Edit: As per OP’s request in the comments,
def findLarge(myList):
largest, larger = myList[0], myList[0]
for num in myList:
if num > largest:
largest, larger = num, largest
elif num > larger:
larger = num
return largest, larger
alist=[-45,0,3,10,90,5,-2,4,18,45,100,1,-266,706]
firstLargest, firstLarger = findLarge(alist[:len(alist)//2])
secondLargest, secondLarger = findLarge(alist[len(alist)//2:])
print sorted((firstLarger, firstLargest, secondLarger, secondLargest))[-2]
Находит два максимальных числа.
>>> def f(seq):
... m1 = m2 = None
... for i in seq:
... if m2 is None:
... m2 = i
... elif m1 is None:
... if i > m2:
... m1, m2 = m2, i
... else:
... m1 = i
... elif i > m2:
... m1, m2 = m2, i
... elif i > m1:
... m1 = i
... return (m1, m2)
...
>>> a = [1, 2, 39, 4, 13, 4, 5, 6, 7, 3, 23, 2]
>>>
>>> f(a)
(23, 39)
>>>
In this tutorial, you will learn how to write Python program to find the first top two largest/maximum element in python.
To find two maximum number in python, first we will sort our array in ascending order (you can also implement it by sorting in descending order).
Now select last two distinct element which will be you top two maximum element.
Read This : Java program to find top two maximum number in array.
Python Program to find two largest number in an array
Output