Pagkuha ng mga n elemento ng isang listahan sa pagkakasunud-sunod mula sa pinakamalaki at pinakamaliit na halaga sa Python

Negosyo

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:heapqModule

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.

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.

Copied title and URL