Жагсаалтын n элементийг Python хэл дээрх хамгийн том ба хамгийн бага утгуудын дарааллаар авах

Бизнес эрхэлдэг

Хэрэв та жагсаалтын (массив) n элементийг Python-ын хамгийн том эсвэл хамгийн бага утгаас n=1 гэсэн дарааллаар авахыг хүсвэл дараах суулгасан функцийг ашиглаж болно.

  • max()
  • min()

Хэрэв n>1 бол жагсаалтыг эрэмбэлэх эсвэл стандарт номын сангийн heapq модулийг ашиглах хоёр арга бий.

  • Хамгийн их ба хамгийн бага утгыг аваарай:max(),min()
  • Хамгийн их ба хамгийн бага утгын дарааллаар n элементийг авна:ангилах
  • Хамгийн их ба хамгийн бага утгын дарааллаар n элементийг авна:heapqМодуль

Хэрэв олж авах элементүүдийн тоо их байвал эхлээд sorted() эсвэл sort() ашиглан эрэмбэлэх нь илүү үр дүнтэй бөгөөд хэрэв тоо нь бага бол heapq модулийн nargest() болон nssmallest() илүү үр дүнтэй байдаг.

Хамгийн их ба хамгийн бага утгуудын индексийг авахын тулд 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 модуль нь илүү үр дүнтэй байдаг.

Copied title and URL