Как найти два максимума в массиве python

Можете просто примерно написать как думать, а то вообще идей нет

Total Pusher's user avatar

задан 6 окт 2019 в 6:26

Forer's user avatar

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

Андрей Крузлик's user avatar

Андрей КрузликАндрей Крузлик

1,2633 золотых знака11 серебряных знаков17 бронзовых знаков

Пожалуй эффективнее всего будет воспользоваться функцией heapq.nlargest():

from heapq import nlargest

res = nlargest(2, items)[1]

ответ дан 6 окт 2019 в 7:14

MaxU - stand with Ukraine's user avatar

Можно написать функцию:

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

E1mir's user avatar

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

FeToR's user avatar

FeToRFeToR

12 бронзовых знака

Когда в списке много элементов, нам может понадобиться найти максимальный или минимальный элемент, и Python значительно упростил нам задачу.

В этой статье мы расскажем, как можно найти второе по величине число в списке Python с помощью следующих принципов:

  1. Сортировка списка и печать предпоследнего числа списка.
  2. Удаление максимального элемента.
  3. Нахождение максимального элемента.
  4. Перемещение по списку.

Давайте разберем первый подход.

Сортировка списка и печать предпоследнего числа

Следующая программа показывает, как это можно сделать на 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 

Объяснение –

  1. Мы объявили список, из которого хотим изъять второй элемент, начиная с конца списка.
  2. После этого мы использовали метод сортировки, чтобы все элементы нашего списка располагались в порядке возрастания.
  3. Теперь мы используем отрицательную индексацию, так как второе по величине число будет на предпоследней позиции.

Второй метод – получить второй по величине элемент списка, удалив максимальный элемент.

Давайте посмотрим, как мы можем это сделать.

Удаление максимального элемента

Пример –

 
#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 

Объяснение –

Давайте разберемся, что мы сделали в вышеуказанной программе:

  1. Мы объявили список, из которого хотим изъять второй по величине элемент.
  2. После этого мы использовали метод set, чтобы взять все уникальные элементы списка.
  3. Теперь мы используем max(), чтобы получить максимальное значение из списка, а затем удаляем его.
  4. После этого мы печатаем максимум результирующего списка, который даст нам второе по величине число.

В третьем методе мы будем использовать цикл 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 

Объяснение –

  1. Мы объявили пустой список, в который будем вставлять элементы.
  2. После этого мы просим пользователя предоставить нам количество элементов, которые мы хотели бы добавить в наш список.
  3. Используем метод сортировки, чтобы все элементы нашего списка располагались в порядке возрастания.
  4. Теперь мы применим отрицательную индексацию, так как второе по величине число будет на второй последней позиции.

Перемещение по списку

В последней программе мы пройдемся по списку, чтобы найти наибольшее число, а затем с помощью условных операторов найдем второе по величине число в списке.

Следующая программа это проиллюстрирует:

 
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 

Объяснение –

Давайте разберемся, что мы сделали в вышеуказанной программе:

  1. Первый шаг – создать функцию, которая проверяет наибольшее число из списка, просматривая его.
  2. В следующем цикле for мы снова просматриваем список для поиска наибольшего числа, но на этот раз исключаем предыдущий, так как здесь наша цель – найти вторую по величине функцию.
  3. Наконец, мы передаем наш список в функцию.

Итак, в этой статье у нас была возможность подумать нестандартно и открыть для себя несколько новых способов разработки логики поиска второго по величине числа в 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)
>>>

python program top two maximum in array

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

Понравилась статья? Поделить с друзьями:
  • Как найти слабое место у мужчин
  • Как найти с ребенком отдых
  • Как найти клиента на аренду квартиры
  • Как составить договор дарения квартиры близкому родственнику без нотариуса через мфц образец
  • Как правильно составить жалобу на банк в центробанк образец