Obter os n elementos de uma lista em ordem a partir dos maiores e menores valores em Python

O negócio

Se quiser obter os n elementos de uma lista (array) em ordem a partir do maior ou menor valor em Python, e n=1, pode usar a seguinte função incorporada.

  • max()
  • min()

Se n>1, há duas maneiras de ordenar a lista ou usar o módulo heapq da biblioteca padrão.

  • Obter os valores máximo e mínimo: max(),min()
  • Obter n elementos em ordem de valor máximo e mínimo:ordenar
  • Obter n elementos em ordem de valor máximo e mínimo:heapqMódulo

Se o número de elementos a serem recuperados for grande, é mais eficiente ordená-los primeiro usando sort() ou sort(), e se o número for pequeno, nargest() e nsmallest() do módulo heapq são mais eficientes.

Para obter os índices dos valores máximo e mínimo, usar max(), min() e index().

Obter os valores máximo e mínimo: max(), min()

Para obter os elementos máximos e mínimos da lista, utilizar as funções integradas max() e min().

l = [3, 6, 7, -1, 23, -10, 18]

print(max(l))
# 23

print(min(l))
# -10

Obter n elementos em ordem de valor máximo e mínimo: Ordenar

Se quiser obter os n elementos de uma lista em ordem a partir do maior ou menor valor, o primeiro método é ordenar (ordenar) a lista.

Para ordenar a lista, usar a função integrada ordenada() ou o método sort() da lista. sort() devolve uma nova lista ordenada, enquanto sort() reordena a lista original.

Trocando a ordem ascendente com o argumento inverso e seleccionando qualquer número de fatias a partir do topo, pode obter n elementos em ordem a partir do maior valor minimo da lista.

ld = sorted(l, reverse=True)
print(ld)
# [23, 18, 7, 6, 3, -1, -10]

print(ld[:3])
# [23, 18, 7]

la = sorted(l)
print(la)
# [-10, -1, 3, 6, 7, 18, 23]

print(la[:3])
# [-10, -1, 3]

Pode escrevê-los todos numa só linha.

print(sorted(l, reverse=True)[:3])
# [23, 18, 7]

print(sorted(l)[:3])
# [-10, -1, 3]

Se não se importar de alterar a ordem da lista original, pode usar o método sort().

print(l)
# [3, 6, 7, -1, 23, -10, 18]

l.sort(reverse=True)
print(l[:3])
# [23, 18, 7]

print(l)
# [23, 18, 7, 6, 3, -1, -10]

l.sort()
print(l[:3])
# [-10, -1, 3]

print(l)
# [-10, -1, 3, 6, 7, 18, 23]

Obter n elementos em ordem de valor máximo e mínimo: heapqMódulo

Se quiser obter os n elementos de uma lista em ordem a partir do maior ou menor valor, pode utilizar o módulo heapq.

Utilize a seguinte função no módulo heapq. Neste caso, a lista original não será alterada.

  • nlargest()
  • nsmallest()

O primeiro argumento é o número de elementos a serem recuperados, e o segundo argumento é o iterável (lista, etc.) a ser visado.

import heapq

l = [3, 6, 7, -1, 23, -10, 18]

print(heapq.nlargest(3, l))
# [23, 18, 7]

print(heapq.nsmallest(3, l))
# [-10, -1, 3]

print(l)
# [3, 6, 7, -1, 23, -10, 18]

Como escrevi no início, se o número de elementos a recuperar for grande, é mais eficiente ordená-los primeiro com sort() ou sort(), e se o número for pequeno, nargest() e nsmallest() do módulo heapq são mais eficientes.

Copied title and URL