Задать вопрос

Как правильно решить задачу по поиску двух максимальных чисел в списке?

Приветствую

Наткнулся на задачу: найти два максимальных из списка чисел и найти их сумму. Пришла только такая простая мысль:
a = [1,2,39,4,13,4,5,6,7,3,23,2]

a.sort()

a = a[-2] + a[-1]

print(a)

Но в списке же могут быть и текстовые данные.
Как правильно и элегантно решить?
  • Вопрос задан
  • 8709 просмотров
Подписаться 3 Оценить Комментировать
Решения вопроса 3
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
import numbers
b = sorted([x for x in a if isinstance(x, numbers.Number)])
sum(b[-2:])


Вариант без сортировки:
import numbers
import heapq

b = [x for x in a if isinstance(x, numbers.Number)]
sum(heapq.nlargest(2, b))
Ответ написан
dimonchik2013
@dimonchik2013
non progredi est regredi
1) очищаешь от нечисел
www.secnetix.de/olli/Python/list_comprehensions.hawk
(перед этим можно и set применить для выкидывания дублей)

2) вычисляешь
Ответ написан
@abcd0x00
Находит два максимальных числа.
>>> 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)
>>>
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
от 200 000 до 300 000 ₽
Greenway Global Новосибирск
от 150 000 ₽
Akronix Санкт-Петербург
от 150 000 до 200 000 ₽
30 янв. 2025, в 19:02
5000 руб./за проект
30 янв. 2025, в 19:01
5000 руб./за проект
30 янв. 2025, в 18:39
200000 руб./за проект