Dobijanje n elemenata popisa od najveće i najmanje vrijednosti u Pythonu

Poslovanje

Ako želite dobiti n elemenata popisa (niza) po redoslijedu od najveće ili najmanje vrijednosti u Pythonu i n=1, možete koristiti sljedeću ugrađenu funkciju.

  • max()
  • min()

Ako je n>1, postoje dva načina za sortiranje popisa ili korištenje heapq modula standardne biblioteke.

  • Dobijte maksimalnu i minimalnu vrijednost:max(),min()
  • Dobiti n elemenata po redoslijedu maksimalne i minimalne vrijednosti:vrsta
  • Dobiti n elemenata po redoslijedu maksimalne i minimalne vrijednosti:heapqModul

Ako je broj elemenata za dohvat velik, učinkovitije ih je prvo sortirati pomoću sorted() ili sort(), a ako je broj mali, nargest() i nsmallest() modula heapq su učinkovitiji.

Da biste dobili indekse maksimalnih i minimalnih vrijednosti, koristite max(), min() i index().

Dobijte maksimalnu i minimalnu vrijednost:max(),min()

Da biste dobili maksimalne i minimalne elemente popisa, koristite ugrađene funkcije max() i min().

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

print(max(l))
# 23

print(min(l))
# -10

Dobiti n elemenata po redoslijedu maksimalne i minimalne vrijednosti: Razvrstaj

Ako želite dobiti n elemenata popisa po redu od najveće ili najmanje vrijednosti, prva metoda je sortiranje (sortiranje) popisa.

Za sortiranje popisa upotrijebite ugrađenu funkciju sorted() ili metodu sort() popisa. sorted() vraća novi sortirani popis, dok sort() mijenja redoslijed izvornog popisa.

Prebacivanjem uzlaznog/silaznog redoslijeda s argumentom obrnutim i odabirom bilo kojeg broja rezova s ​​vrha, možete dobiti n elemenata po redu od najveće/manje vrijednosti na popisu.

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žete ih sve napisati u jednom retku.

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

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

Ako vam ne smeta promijeniti redoslijed izvornog popisa, možete koristiti metodu 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]

Dobiti n elemenata po redoslijedu maksimalne i minimalne vrijednosti:heapqModul

Ako želite dobiti n elemenata popisa po redu od najveće ili najmanje vrijednosti, možete koristiti heapq modul.

Koristite sljedeću funkciju u heapq modulu. U tom se slučaju izvorni popis neće mijenjati.

  • nlargest()
  • nsmallest()

Prvi argument je broj elemenata koje treba dohvatiti, a drugi argument je iterable (popis, itd.) koji se cilja.

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]

Kao što sam napisao na početku, ako je broj elemenata za dohvat velik, učinkovitije je prvo ih sortirati pomoću sorted() ili sort(), a ako je broj mali, nargest() i nsmallest() od heapq modul su učinkovitiji.