Python:Рецепты/Поиск N максимальных и минимальных элементов: различия между версиями

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Нет описания правки
 
(не показаны 3 промежуточные версии этого же участника)
Строка 18: Строка 18:
Дана последовательность чисел:
Дана последовательность чисел:


<syntaxhighlight lang="python" enclose="div">
<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" enclose="div">
<syntaxhighlight lang="python">
import heap q
import heapq
</syntaxhighlight>
</syntaxhighlight>


Получим 3 максимальных числа из последовательности:
Получим 3 максимальных числа из последовательности:


<syntaxhighlight lang="python" enclose="div">
<syntaxhighlight lang="python">
print(heapq.nlargest(3, nums))
print(heapq.nlargest(3, nums))
</syntaxhighlight>
</syntaxhighlight>
Строка 36: Строка 36:
Результат:
Результат:


<syntaxhighlight lang="python" enclose="div">
<syntaxhighlight lang="python">
[111, 100, 99]
[111, 100, 99]
</syntaxhighlight>
</syntaxhighlight>
Строка 42: Строка 42:
Получим 3 минимальных числа из последовательности:
Получим 3 минимальных числа из последовательности:


<syntaxhighlight lang="python" enclose="div">
<syntaxhighlight lang="python">
print(heapq.nsmallest(3, nums))
print(heapq.nsmallest(3, nums))
</syntaxhighlight>
</syntaxhighlight>
Строка 48: Строка 48:
Результат:
Результат:


<syntaxhighlight lang="python" enclose="div">
<syntaxhighlight lang="python">
[-38, -9, -4]
[-38, -9, -4]
</syntaxhighlight>
</syntaxhighlight>
Строка 56: Строка 56:
Разберем пример с более сложной структурой данных, дан список отображений:
Разберем пример с более сложной структурой данных, дан список отображений:


<syntaxhighlight lang="python" enclose="div">
<syntaxhighlight lang="python">
crypto= [
crypto= [
{'name':'bitcoin','price': 7500, 'amount':50},
{'name':'bitcoin','price': 7500, 'amount':50},
Строка 68: Строка 68:
Импортируем модуль:
Импортируем модуль:


<syntaxhighlight lang="python" enclose="div">
<syntaxhighlight lang="python">
import heap q
import heapq
</syntaxhighlight>
</syntaxhighlight>


Получим 3 отображения с максимальной ценой:
Получим 3 отображения с максимальной ценой:


<syntaxhighlight lang="python" enclose="div">
<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" enclose="div">
<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" enclose="div">
<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" enclose="div">
<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>


=См.также=
=См.также=
{{ads}}


=Внешние ссылки=
=Внешние ссылки=
Строка 104: Строка 102:
<references />
<references />


{{SEO
{{Навигационная таблица/Портал/Python}}
|Заголовок статьи=Python:Рецепты - Поиск N максимальных и минимальных элементов / Онлайн справочник - wikihandbk.com
|Ключевые слова=python, рецепты python, Поиск N максимальных и минимальных элементов
|Описание статьи=
|Изображение статьи для Open Graph=
|Адрес страницы для schemaNewsArticle=<nowiki>http://wikihandbk.com/wiki/Python:Рецепты/Поиск N максимальных и минимальных элементов</nowiki>
|Изображение статьи для schemaNewsArticle=<nowiki></nowiki>
|Высота изображения статьи для schemaNewsArticle=
|Ширина изображения статьи для schemaNewsArticle=
|Дата публикации для schemaNewsArticle=2020-04-30
|Автор=Мякишев Е.А.
|Издатель=myagkij
|Логотип издателя для schemaNewsArticle=<nowiki>http://wikihandbk.com/ruwiki/images/6/61/Tech_geek_logo_1x.jpg</nowiki>
|Ширина логотипа издателя для schemaNewsArticle=60
|Высота логотипа издателя для schemaNewsArticle=45
}}


[[Категория:Рецепты]]
[[Категория:Рецепты]]

Текущая версия от 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}]

См.также

Внешние ссылки