sorted() และฟังก์ชัน key
เรียงตัวเลข สตริง และทูเพิล
sorted() และฟังก์ชัน key เป็นบทเรียน Coding Interview Prep ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Coding Interview Prep และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Coding Interview Prep มีบทเรียนทั้งหมด 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) และปลดล็อคส่วนที่เหลือของคอร์ส Coding Interview Prep ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Coding Interview Prep มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “sorted() และฟังก์ชัน key”
เรียงตัวเลข สตริง และทูเพิล คุณปฏิบัติ Coding Interview Prep ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Coding Interview Prep หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Coding Interview Prep บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “sorted() และฟังก์ชัน key” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Coding Interview Prep นี้ได้ไหม
ได้ บทเรียน Coding Interview Prep ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- sorted() และฟังก์ชัน key
- เรียงตามหลายฟิลด์
- ลำดับกำหนดเองด้วย functools.cmp_to_key
- เหตุใดการเรียงก่อนจึงปลดล็อกวิธีแก้