Python тіліндегі ең үлкен және ең кіші мәндерден тізімнің n элементтерін ретімен алу

Іскерлік

Егер тізімнің (массивтің) n элементтерін Python тіліндегі ең үлкен немесе ең кіші мәннен бастап ретімен және n=1 алғыңыз келсе, келесі кірістірілген функцияны пайдалана аласыз.

  • max()
  • min()

Егер n>1 болса, тізімді сұрыптаудың немесе стандартты кітапхананың heapq модулін пайдаланудың екі жолы бар.

  • Ең үлкен және ең төменгі мәндерді алыңыз:max(),min()
  • n элементті максимум және ең кіші мән ретімен алыңыз:сұрыптау
  • n элементті максимум және ең кіші мән ретімен алыңыз:heapqМодуль

Егер шығарылатын элементтердің саны көп болса, оларды алдымен sorted() немесе sort() арқылы сұрыптау тиімдірек, ал егер сан аз болса, heapq модулінің nargest() және nsmalest() тиімдірек болады.

Ең үлкен және ең төменгі мәндердің индекстерін алу үшін max(), min() және index() пайдаланыңыз.

Ең үлкен және ең төменгі мәндерді алыңыз:max(),min()

Тізімнің максималды және минималды элементтерін алу үшін max() және min() кірістірілген функцияларды пайдаланыңыз.

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

print(max(l))
# 23

print(min(l))
# -10

n элементті максималды және ең аз мәндер ретімен алыңыз: Сұрыптау

Тізімнің n элементін ең үлкен немесе ең кіші мәннен ретімен алғыңыз келсе, бірінші әдіс тізімді сұрыптау (сұрыптау) болып табылады.

Тізімді сұрыптау үшін кіріктірілген sorted() функциясын немесе тізімнің sort() әдісін пайдаланыңыз. sorted() жаңа сұрыпталған тізімді қайтарады, ал sort() бастапқы тізімді қайта реттейді.

Аргументті кері аргументпен өсу/кему ретін ауыстыру және жоғарғы жақтан кесінділердің кез келген санын таңдау арқылы тізімнің ең үлкен/кіші мәнінен ретімен n элементті алуға болады.

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]

Олардың барлығын бір жолға жазуға болады.

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

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

Бастапқы тізімнің ретін өзгертуге қарсы болмасаңыз, 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]

n элементті максимум және ең кіші мән ретімен алыңыз:heapqМодуль

Ең үлкен немесе ең кіші мәннен бастап тізімнің n элементтерін ретімен алғыңыз келсе, heapq модулін пайдалануға болады.

Heapq модулінде келесі функцияны пайдаланыңыз. Бұл жағдайда бастапқы тізім өзгертілмейді.

  • nlargest()
  • nsmallest()

Бірінші аргумент – алынатын элементтердің саны, ал екінші аргумент – мақсатты түрде қайталанатын (тізім, т.б.).

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]

Басында жазғанымдай, егер шығарылатын элементтердің саны көп болса, оларды алдымен sorted() немесе sort() арқылы сұрыптау тиімдірек, ал егер сан аз болса, nargest() және nssmallest() heapq модулі тиімдірек.