Pobieranie n elementów listy w kolejności od największej i najmniejszej wartości w Pythonie

Biznes

Jeśli chcesz uzyskać n elementów listy (tablicy) w kolejności od największej lub najmniejszej wartości w Pythonie, a n=1, możesz użyć następującej wbudowanej funkcji.

  • max()
  • min()

Jeśli n>1, istnieją dwa sposoby sortowania listy lub użycie modułu heapq z biblioteki standardowej.

  • Uzyskaj wartości maksymalne i minimalne: max(),min()
  • Pobierz n elementów w kolejności od wartości maksymalnej do minimalnej:sortuj
  • Pobierz n elementów w kolejności od wartości maksymalnej do minimalnej:heapqModuł

Jeśli liczba elementów do pobrania jest duża, bardziej efektywne jest posortowanie ich najpierw za pomocą sorted() lub sort(), a jeśli liczba ta jest mała, bardziej efektywne są nargest() i nsmallest() modułu heapq.

Aby uzyskać indeksy wartości maksymalnej i minimalnej, użyj funkcji max(), min() oraz index().

Uzyskaj wartości maksymalne i minimalne: max(), min()

Aby uzyskać maksymalne i minimalne elementy listy, użyj wbudowanych funkcji max() i min().

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

print(max(l))
# 23

print(min(l))
# -10

Pobierz n elementów w kolejności wartości maksymalnej i minimalnej: Sortuj

Jeśli chcesz uzyskać n elementów listy w kolejności od największej lub najmniejszej wartości, pierwszą metodą jest posortowanie (sortowanie) listy.

Aby posortować listę, użyj wbudowanej funkcji sorted() lub metody sort() listy. sorted() zwraca nową posortowaną listę, podczas gdy sort() zmienia kolejność oryginalnej listy.

Przełączając kolejność rosnącą za pomocą argumentu reverse i wybierając dowolną liczbę plasterków od góry, można uzyskać n elementów w kolejności od największej do najmniejszej wartości listy.

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]

Możesz napisać je wszystkie w jednej linii.

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

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

Jeśli nie masz nic przeciwko zmianie kolejności oryginalnej listy, możesz użyć metody 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]

Pobierz n elementów w kolejności od wartości maksymalnej do minimalnej: heapqModuł

Jeśli chcesz uzyskać n elementów listy w kolejności od największej lub najmniejszej wartości, możesz użyć modułu heapq.

Użyj następującej funkcji w module heapq. W tym przypadku oryginalna lista nie zostanie zmieniona.

  • nlargest()
  • nsmallest()

Pierwszy argument jest liczbą elementów do pobrania, a drugi argument jest iterowalną (listą, itp.), do której należy dążyć.

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]

Jak napisałem na początku, jeśli liczba elementów do pobrania jest duża, bardziej efektywne jest posortowanie ich najpierw za pomocą sorted() lub sort(), a jeśli liczba ta jest mała, bardziej efektywne są nargest() i nsmallest() modułu heapq.

Copied title and URL