Я получаю второй по величине номер из списка: < /p>
>>> numbers = [20,67,3,2.6,7,74,2.8,90.8,52.8,4,3,2,5,7]
>>> numbers.remove(max(numbers))
>>> max(numbers)
74
< /code>
За исключением того, что простая обработка списка проходит через список дважды: найти самый большой, а затем второй по величине. Это также разрушительно - мне нужно две копии данных, если я хочу сохранить оригинал: < /p>
>>> numbers = [20,67,3,2.6,7,74,2.8,90.8,52.8,4,3,2,5,7]
>>> if numbers[0]>numbers[1]):
... m, m2 = numbers[0], numbers[1]
... else:
... m, m2 = numbers[1], numbers[0]
...
>>> for x in numbers[2:]:
... if x>m2:
... if x>m:
... m2, m = m, x
... else:
... m2 = x
...
>>> m2
74
< /code>
, который проходит через список только один раз, но разве не является неясным, как предыдущее решение. < /p>
Есть ли способ иметь оба? Ясность первой версии, но сингл проходит через второй?
Подробнее здесь: https://stackoverflow.com/questions/162 ... inear-time
Получите второе по величине число в списке в линейное время ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как найти наибольшее и второе по величине число в массиве без использования функции max
Anonymous » » в форуме Php - 0 Ответы
- 21 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Как найти наибольшее и второе по величине число в массиве без использования функции max
Anonymous » » в форуме Php - 0 Ответы
- 22 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Поиск объекта в списке по определенному критерию (второе по величине значение)
Anonymous » » в форуме JAVA - 0 Ответы
- 22 Просмотры
-
Последнее сообщение Anonymous
-