Python:Рецепты/Поиск N максимальных и минимальных элементов: различия между версиями
Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Myagkij (обсуждение | вклад) (ошибка в импорте модуля) |
Myagkij (обсуждение | вклад) Нет описания правки |
||
(не показаны 2 промежуточные версии этого же участника) | |||
Строка 18: | Строка 18: | ||
Дана последовательность чисел: | Дана последовательность чисел: | ||
<syntaxhighlight lang="python | <syntaxhighlight lang="python"> | ||
nums = [111, -4, 0, 10, 56, -38, 11, 78, -9, 100, 99, 1,2,3] | nums = [111, -4, 0, 10, 56, -38, 11, 78, -9, 100, 99, 1,2,3] | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Строка 24: | Строка 24: | ||
Импортируем модуль: | Импортируем модуль: | ||
<syntaxhighlight lang="python | <syntaxhighlight lang="python"> | ||
import heapq | import heapq | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Строка 30: | Строка 30: | ||
Получим 3 максимальных числа из последовательности: | Получим 3 максимальных числа из последовательности: | ||
<syntaxhighlight lang="python | <syntaxhighlight lang="python"> | ||
print(heapq.nlargest(3, nums)) | print(heapq.nlargest(3, nums)) | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Строка 36: | Строка 36: | ||
Результат: | Результат: | ||
<syntaxhighlight lang="python | <syntaxhighlight lang="python"> | ||
[111, 100, 99] | [111, 100, 99] | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Строка 42: | Строка 42: | ||
Получим 3 минимальных числа из последовательности: | Получим 3 минимальных числа из последовательности: | ||
<syntaxhighlight lang="python | <syntaxhighlight lang="python"> | ||
print(heapq.nsmallest(3, nums)) | print(heapq.nsmallest(3, nums)) | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Строка 48: | Строка 48: | ||
Результат: | Результат: | ||
<syntaxhighlight lang="python | <syntaxhighlight lang="python"> | ||
[-38, -9, -4] | [-38, -9, -4] | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Строка 56: | Строка 56: | ||
Разберем пример с более сложной структурой данных, дан список отображений: | Разберем пример с более сложной структурой данных, дан список отображений: | ||
<syntaxhighlight lang="python | <syntaxhighlight lang="python"> | ||
crypto= [ | crypto= [ | ||
{'name':'bitcoin','price': 7500, 'amount':50}, | {'name':'bitcoin','price': 7500, 'amount':50}, | ||
Строка 68: | Строка 68: | ||
Импортируем модуль: | Импортируем модуль: | ||
<syntaxhighlight lang="python | <syntaxhighlight lang="python"> | ||
import heapq | import heapq | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Строка 74: | Строка 74: | ||
Получим 3 отображения с максимальной ценой: | Получим 3 отображения с максимальной ценой: | ||
<syntaxhighlight lang="python | <syntaxhighlight lang="python"> | ||
print(heapq.nlargest(3, crypto, key=lambda s: s['price'])) | print(heapq.nlargest(3, crypto, key=lambda s: s['price'])) | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Строка 80: | Строка 80: | ||
Результат: | Результат: | ||
<syntaxhighlight lang="python | <syntaxhighlight lang="python"> | ||
[{'name': 'bitcoin', 'price': 7500, 'amount': 50}, {'name': 'ethereum', 'price': 750, 'amount': 115}, {'name': 'litecoin', 'price': 75, 'amount': 75}] | [{'name': 'bitcoin', 'price': 7500, 'amount': 50}, {'name': 'ethereum', 'price': 750, 'amount': 115}, {'name': 'litecoin', 'price': 75, 'amount': 75}] | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Строка 86: | Строка 86: | ||
Получим 3 отображения с минимальным количеством монет: | Получим 3 отображения с минимальным количеством монет: | ||
<syntaxhighlight lang="python | <syntaxhighlight lang="python"> | ||
print(heapq.nsmallest(3, crypto, key=lambda s: s['amount'])) | print(heapq.nsmallest(3, crypto, key=lambda s: s['amount'])) | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Строка 92: | Строка 92: | ||
Результат: | Результат: | ||
<syntaxhighlight lang="python | <syntaxhighlight lang="python"> | ||
[{'name': 'bitcoin', 'price': 7500, 'amount': 50}, {'name': 'litecoin', 'price': 75, 'amount': 75}, {'name': 'monero', 'price': 65.75, 'amount': 100}] | [{'name': 'bitcoin', 'price': 7500, 'amount': 50}, {'name': 'litecoin', 'price': 75, 'amount': 75}, {'name': 'monero', 'price': 65.75, 'amount': 100}] | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=См.также= | =См.также= | ||
=Внешние ссылки= | =Внешние ссылки= | ||
Строка 104: | Строка 102: | ||
<references /> | <references /> | ||
{{ | {{Навигационная таблица/Портал/Python}} | ||
}} | |||
[[Категория:Рецепты]] | [[Категория:Рецепты]] |
Текущая версия от 22:16, 12 марта 2023
Проверка/Оформление/Редактирование: Мякишев Е.А.
Поиск N максимальных и минимальных элементов
Задача
У вас есть коллекция элементов и вы хотите создать список из N максимальных или минимальных элементов.
Решение
Для этого подойдёт модуль heapq, в котором есть две функции nlargest() и nsmallest().
Пример
№1
Дана последовательность чисел:
nums = [111, -4, 0, 10, 56, -38, 11, 78, -9, 100, 99, 1,2,3]
Импортируем модуль:
import heapq
Получим 3 максимальных числа из последовательности:
print(heapq.nlargest(3, nums))
Результат:
[111, 100, 99]
Получим 3 минимальных числа из последовательности:
print(heapq.nsmallest(3, nums))
Результат:
[-38, -9, -4]
№2
Разберем пример с более сложной структурой данных, дан список отображений:
crypto= [
{'name':'bitcoin','price': 7500, 'amount':50},
{'name':'litecoin','price': 75, 'amount':75},
{'name':'ethereum','price': 750, 'amount':115},
{'name':'dogecoin','price': 0.075, 'amount':20000},
{'name':'tron','price': 0.75, 'amount':1750},
{'name':'monero','price': 65.75, 'amount':100}]
Импортируем модуль:
import heapq
Получим 3 отображения с максимальной ценой:
print(heapq.nlargest(3, crypto, key=lambda s: s['price']))
Результат:
[{'name': 'bitcoin', 'price': 7500, 'amount': 50}, {'name': 'ethereum', 'price': 750, 'amount': 115}, {'name': 'litecoin', 'price': 75, 'amount': 75}]
Получим 3 отображения с минимальным количеством монет:
print(heapq.nsmallest(3, crypto, key=lambda s: s['amount']))
Результат:
[{'name': 'bitcoin', 'price': 7500, 'amount': 50}, {'name': 'litecoin', 'price': 75, 'amount': 75}, {'name': 'monero', 'price': 65.75, 'amount': 100}]
См.также
Внешние ссылки
Категории:
- Справочник языка Python
- Python
- Проверка:myagkij
- Оформление:myagkij
- Редактирование:myagkij
- Страницы, где используется шаблон "Навигационная таблица/Телепорт"
- Страницы с телепортом
- Рецепты
- Рецепты Python
- Последовательности в Python
- Работа с последовательностями в Python
- Распаковка в Python
- Работа со структурами данных в Python
- Структуры данных Python
- Последовательности
- Работа с последовательностями
- Распаковка
- Работа со структурами данных
- Структуры данных