0Pricing
Competitive Programming Academy · บทเรียน

sorted() และฟังก์ชัน key

เรียงตัวเลข สตริง และทูเพิล

sorted() และฟังก์ชัน key เป็นบทเรียน Competitive Programming Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Competitive Programming Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Competitive Programming Academy มีบทเรียนทั้งหมด 4 บทเรียน

การเรียงลำดับช่วยคว้าชัยในการแข่งขัน

โจทย์การแข่งขันจำนวนมากจะง่ายขึ้นทันทีเมื่อข้อมูลเรียงตามลำดับ เครื่องมือแรกของคุณคือ sorted() ซึ่งคืนค่ารายการใหม่ที่เรียงแล้ว 🏆

sorted() คืนสำเนา

การเรียกใช้ sorted(nums) จะไม่เปลี่ยนแปลงรายการเดิม และจะส่งคืนรายการใหม่ที่เรียงแล้ว เหมาะอย่างยิ่งเมื่อคุณยังต้องใช้ข้อมูลนำเข้าในภายหลัง

nums = [3, 1, 2]
print(sorted(nums))   # [1, 2, 3]
print(nums)           # [3, 1, 2]

list.sort() เรียงในตำแหน่งเดิม

เมื่อคุณไม่ต้องการลำดับเดิมแล้ว list.sort() จะเรียงข้อมูลในตำแหน่งเดิมและคืนค่า None วิธีนี้ช่วยประหยัดหน่วยความจำเมื่ออาร์เรย์มีขนาดใหญ่

nums = [3, 1, 2]
nums.sort()
print(nums)   # [1, 2, 3]

ลำดับเริ่มต้นคือจากน้อยไปมาก

โดยค่าเริ่มต้น Python จะเรียงจากค่าน้อยไปหาค่ามาก ตัวเลขจะเรียงจากต่ำไปสูง ส่วนสตริงจะเรียงตามลำดับพจนานุกรมทีละอักขระ

print(sorted(["pear", "apple", "kiwi"]))
# ['apple', 'kiwi', 'pear']

กลับลำดับด้วย reverse

ส่งค่า reverse=True เพื่อเรียงจากค่ามากไปหาค่าน้อย เหมาะเมื่อขั้นตอนแบบละโมบต้องการสมาชิกที่ใหญ่ที่สุดก่อน

print(sorted([3, 1, 2], reverse=True))
# [3, 2, 1]

ทำความรู้จักฟังก์ชัน key

อาร์กิวเมนต์ key จะบอก sort ว่าควรจัดอันดับสมาชิกแต่ละตัวอย่างไร Python จะเรียกใช้ key กับสมาชิกทุกตัว แล้วเรียงตามค่าที่ได้รับคืนมา

words = ["bb", "a", "ccc"]
print(sorted(words, key=len))
# ['a', 'bb', 'ccc']

key กับ lambda

lambda ขนาดเล็กช่วยให้คุณเรียงตามนิพจน์ใด ๆ ได้โดยเขียนไว้ในบรรทัดเดียว ในที่นี้เราเรียงตัวเลขตามระยะห่างจากศูนย์

vals = [-5, 2, -1, 3]
print(sorted(vals, key=lambda x: abs(x)))
# [-1, 2, 3, -5]

เรียงออบเจกต์ตามฟิลด์

เมื่อใช้ทูเพิลหรือระเบียน ให้กำหนด key ไปยังฟิลด์ที่สำคัญ ส่วนอื่น ๆ ของสมาชิกจะถูกจัดเรียงไปด้วยโดยไม่ต้องทำอะไรเพิ่ม

people = [("Ann", 30), ("Bob", 25)]
print(sorted(people, key=lambda p: p[1]))
# [('Bob', 25), ('Ann', 30)]

การเรียงลำดับมีความเสถียร

การเรียงลำดับของ Python มีคุณสมบัติเสถียร: คีย์ที่เท่ากันจะคงลำดับสัมพัทธ์เดิมไว้ ทำให้คุณเรียงหลายรอบเพื่อจัดการกรณีค่าเท่ากันได้อย่างปลอดภัย

key ดีกว่าการเปรียบเทียบด้วยตนเอง

key จะถูกคำนวณเพียงครั้งเดียวต่อสมาชิก จึงยังทำงานได้รวดเร็วกับข้อมูลนำเข้าขนาดใหญ่ ให้ใช้วิธีนี้แทนการสลับสมาชิกด้วยตนเอง

การเรียงลำดับมีต้นทุน O(n log n)

Python เรียงข้อมูลในเวลา O(n log n) สำหรับ n ที่มีขนาดสูงสุดหลายแสน ค่าเวลานี้ยังอยู่ภายในขีดจำกัดหนึ่งวินาทีได้อย่างสบาย

ตรวจสอบอย่างรวดเร็ว

คุณต้องการให้รายการเรียงลำดับ แต่ต้องรักษารายการเดิมไว้

สรุป

คุณสามารถจัดลำดับข้อมูลด้วย sorted() หรือเรียงในตำแหน่งเดิม กลับลำดับด้วย reverse และจัดอันดับสิ่งใด ๆ ด้วย key การเรียงลำดับแบบเสถียรช่วยจัดการค่าที่เท่ากันได้เรียบร้อย 🎉

คำถามที่พบบ่อย

บทเรียน “sorted() และฟังก์ชัน key” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “sorted() และฟังก์ชัน key” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Competitive Programming Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Competitive Programming Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “sorted() และฟังก์ชัน key”

เรียงตัวเลข สตริง และทูเพิล คุณปฏิบัติ Competitive Programming Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Competitive Programming Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Competitive Programming Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน

บทเรียน “sorted() และฟังก์ชัน key” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Competitive Programming Academy นี้ได้ไหม

ได้ บทเรียน Competitive Programming Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. sorted() และฟังก์ชัน key
  2. เรียงตามหลายฟิลด์
  3. ลำดับกำหนดเองด้วย functools.cmp_to_key
  4. เหตุใดการเรียงก่อนจึงปลดล็อกวิธีแก้
← กลับไปที่ Competitive Programming Academy