Kung gusto mong makuha ang n elemento ng isang listahan (array) sa pagkakasunud-sunod mula sa pinakamalaki o pinakamaliit na halaga sa Python, at n=1, maaari mong gamitin ang sumusunod na built-in na function.
max()
min()
Kung n>1, mayroong dalawang paraan para pagbukud-bukurin ang listahan o gamitin ang heapq module ng karaniwang library.
- Kunin ang maximum at minimum na mga halaga:
max()
,min()
- Kumuha ng n elemento sa pagkakasunud-sunod ng maximum at minimum na halaga:uri
- Kumuha ng n elemento sa pagkakasunud-sunod ng maximum at minimum na halaga:
heapq
Module
Kung ang bilang ng mga elementong kukunin ay malaki, mas mahusay na pag-uri-uriin muna ang mga ito gamit ang sorted() o sort(), at kung maliit ang bilang, ang pinakamaliit() at nsmallest() ng heapq module ay mas mahusay.
Upang makuha ang mga index ng maximum at minimum na mga halaga, gamitin ang max(), min() at index().
Kunin ang maximum at minimum na mga halaga:max(),min()
Upang makuha ang maximum at minimum na mga elemento ng listahan, gamitin ang mga built-in na function max() at min().
l = [3, 6, 7, -1, 23, -10, 18]
print(max(l))
# 23
print(min(l))
# -10
Kumuha ng n elemento sa pagkakasunud-sunod ng maximum at minimum na halaga: Pagbukud-bukurin
Kung nais mong makuha ang n elemento ng isang listahan sa pagkakasunud-sunod mula sa pinakamalaki o pinakamaliit na halaga, ang unang paraan ay ang pag-uri-uriin (pag-uri-uriin) ang listahan.
Upang pagbukud-bukurin ang listahan, gamitin ang built-in na function sorted() o ang sort() na paraan ng listahan. sorted() ay nagbabalik ng bagong sorted list, habang sort() ay muling nag-aayos ng orihinal na listahan.
Sa pamamagitan ng pagpapalit ng pataas/pababang pagkakasunud-sunod na may baligtad na argumento at pagpili ng anumang bilang ng mga hiwa mula sa itaas, maaari kang makakuha ng n elemento sa pagkakasunud-sunod mula sa pinakamalaking/minor na halaga ng listahan.
- Mga Kaugnay na Artikulo:Pag-uuri ng isang listahan sa Python: ang pagkakaiba sa pagitan ng pinagsunod-sunod at pinagsunod-sunod
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]
Maaari mong isulat ang lahat sa isang linya.
print(sorted(l, reverse=True)[:3])
# [23, 18, 7]
print(sorted(l)[:3])
# [-10, -1, 3]
Kung hindi mo iniisip na baguhin ang pagkakasunud-sunod ng orihinal na listahan, maaari mong gamitin ang sort() na paraan.
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]
Kumuha ng n elemento sa pagkakasunud-sunod ng maximum at minimum na halaga:heapqModule
Kung gusto mong makuha ang n elemento ng isang listahan sa pagkakasunud-sunod mula sa pinakamalaki o pinakamaliit na halaga, maaari mong gamitin ang heapq module.
Gamitin ang sumusunod na function sa heapq module. Sa kasong ito, ang orihinal na listahan ay hindi mababago.
nlargest()
nsmallest()
Ang unang argumento ay ang bilang ng mga elementong kukunin, at ang pangalawang argumento ay ang iterable (listahan, atbp.) na ita-target.
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]
Tulad ng isinulat ko sa simula, kung ang bilang ng mga elemento na kukunin ay malaki, mas mahusay na pag-uri-uriin muna ang mga ito gamit ang sorted() o sort(), at kung ang bilang ay maliit, pinakamaliit() at nsmallest() ng ang heapq module ay mas mahusay.