Få fram de n elementen i en lista i ordning från de största och minsta värdena i Python

Företag

Om du vill hämta de n elementen i en lista (array) i ordning från det största eller minsta värdet i Python, och n=1, kan du använda följande inbyggda funktion.

  • max()
  • min()

Om n>1 finns det två sätt att sortera listan eller använda heapq-modulen i standardbiblioteket.

  • Hämta maximi- och minimivärden: max(),min()
  • Hämta n element i ordning efter högsta och lägsta värde.:sortera
  • Hämta n element i ordning efter högsta och lägsta värde.:heapqModul

Om antalet element som ska hämtas är stort är det effektivare att sortera dem först med hjälp av sorted() eller sort(), och om antalet är litet är nargest() och nsmallest() i heapq-modulen effektivare.

Använd max(), min() och index() för att få fram indexen för de högsta och lägsta värdena.

Hämta maximi- och minimivärden: max(), min()

För att få fram listans största och minsta element använder du de inbyggda funktionerna max() och min().

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

print(max(l))
# 23

print(min(l))
# -10

Hämta n element i ordning efter högsta och lägsta värde: Sortera

Om du vill få fram de n elementen i en lista i ordning från det största eller minsta värdet är den första metoden att sortera (sortera) listan.

För att sortera listan använder du den inbyggda funktionen sorted() eller listans sort()-metod. sorted() returnerar en ny sorterad lista, medan sort() omordnar den ursprungliga listan.

Genom att växla uppåtgående\nedåtgående ordning med argumentet reverse och välja ett valfritt antal skivor från toppen kan du få fram n element i ordning från det största\minsta värdet i listan.

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]

Du kan skriva dem alla på en rad.

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

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

Om du inte har något emot att ändra ordningen i den ursprungliga listan kan du använda metoden 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]

Hämta n element i ordning efter högsta och lägsta värde.: heapqModul

Om du vill hämta de n elementen i en lista i ordning från det största eller minsta värdet kan du använda modulen heapq.

Använd följande funktion i heapq-modulen. I det här fallet kommer den ursprungliga listan inte att ändras.

  • nlargest()
  • nsmallest()

Det första argumentet är antalet element som ska hämtas och det andra argumentet är den iterable (lista etc.) som ska användas.

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]

Som jag skrev i början är det effektivare att sortera dem först med sorted() eller sort() om antalet element som ska hämtas är stort, och om antalet är litet är nargest() och nsmallest() i heapq-modulen effektivare.

Copied title and URL