Obtención dos n elementos dunha lista ordenados a partir dos valores máis grandes e máis pequenos en Python

Negocios

Se queres obter os n elementos dunha lista (matriz) ordenados a partir do valor maior ou menor en Python, e n=1, podes usar a seguinte función integrada.

  • max()
  • min()

Se n>1, hai dúas formas de ordenar a lista ou usar o módulo heapq da biblioteca estándar.

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

Se o número de elementos a recuperar é grande, é máis eficiente ordenalos primeiro usando sorted() ou sort(), e se o número é pequeno, nargest() e nsmallest() do módulo heapq son máis eficientes.

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

Obter os valores máximos e mínimos:max(),min()

Para obter os elementos máximos e mínimos da lista, use as funcións incorporadas max() e min().

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

print(max(l))
# 23

print(min(l))
# -10

Obter n elementos por orde de valor máximo e mínimo: Ordenar

Se queres obter os n elementos dunha lista ordenados a partir do valor maior ou menor, o primeiro método é ordenar (ordenar) a lista.

Para ordenar a lista, use a función integrada sorted() ou o método sort() da lista. sorted() devolve unha nova lista ordenada, mentres que sort() reordena a lista orixinal.

Cambiando a orde ascendente/descendente co argumento inverso e seleccionando calquera número de porcións na parte superior, pode obter n elementos ordenados a partir do valor maior/menor 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]

Podes escribilos todos nunha soa liña.

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

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

Se non che importa cambiar a orde da lista orixinal, podes 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 por orde de valor máximo e mínimo:heapqMódulo

Se queres obter os n elementos dunha lista ordenados a partir do valor maior ou menor, podes usar o módulo heapq.

Use a seguinte función no módulo heapq. Neste caso, a lista orixinal non se modificará.

  • nlargest()
  • nsmallest()

O primeiro argumento é o número de elementos que se van recuperar, e o segundo argumento é o iterable (lista, etc.) ao que se dirixe.

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 escribín ao principio, se o número de elementos a recuperar é grande, é máis eficiente ordenalos primeiro con sorted() ou sort(), e se o número é pequeno, nargest() e nsmallest() de o módulo heapq son máis eficientes.

Copied title and URL