Хэрэв та жагсаалтын (массив) 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 элементийг дарааллаар нь авч болно.
- Холбоотой нийтлэлүүд:Python дээр жагсаалтыг эрэмбэлэх: эрэмбэлэх ба эрэмбэлэх хоёрын ялгаа
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 модуль нь илүү үр дүнтэй байдаг.