รับองค์ประกอบ n ของรายการโดยเรียงลำดับจากค่าที่มากที่สุดและน้อยที่สุดใน Python

ธุรกิจ

หากคุณต้องการรับองค์ประกอบ n ของรายการ (อาร์เรย์) ตามลำดับจากค่าที่มากที่สุดหรือน้อยที่สุดใน Python และ n=1 คุณสามารถใช้ฟังก์ชันในตัวต่อไปนี้

  • max()
  • min()

ถ้า n>1 มีสองวิธีในการเรียงลำดับรายการหรือใช้โมดูล heapq ของไลบรารีมาตรฐาน

  • รับค่าสูงสุดและต่ำสุด:max(),min()
  • รับองค์ประกอบ n รายการตามลำดับค่าสูงสุดและต่ำสุด:เรียงลำดับ
  • รับองค์ประกอบ n รายการตามลำดับค่าสูงสุดและต่ำสุด:heapqโมดูล

หากจำนวนองค์ประกอบที่จะดึงข้อมูลมีขนาดใหญ่ จะมีประสิทธิภาพมากกว่าในการจัดเรียงองค์ประกอบก่อนโดยใช้ sorted() หรือ sort() และหากจำนวนมีขนาดเล็ก nargest() และ nsmallest() ของโมดูล heapq จะมีประสิทธิภาพมากกว่า

ในการรับดัชนีของค่าสูงสุดและต่ำสุด ให้ใช้ max(), min() และ index()

รับค่าสูงสุดและต่ำสุด:max(),min()

เพื่อให้ได้องค์ประกอบสูงสุดและต่ำสุดของรายการ ให้ใช้ฟังก์ชันในตัว max() และ min()

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

print(max(l))
# 23

print(min(l))
# -10

รับ n องค์ประกอบตามลำดับค่าสูงสุดและต่ำสุด: Sort

หากคุณต้องการรับองค์ประกอบ 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()

อาร์กิวเมนต์แรกคือจำนวนขององค์ประกอบที่จะดึงข้อมูล และอาร์กิวเมนต์ที่สองคือ iterable (รายการ ฯลฯ) ที่จะกำหนดเป้าหมาย

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() และ nsmallest() ของ โมดูล heapq นั้นมีประสิทธิภาพมากกว่า