sorted
และ list.sort
ความแตกต่างของสองตัวนี้ คือ
sorted
จะมองแบบ functional ได้ของใหม่ออกมา (โดยที่ของเก่าไม่เปลี่ยนค่า) ส่วน list.sort
จะมองแบบ OOP คือเข้าไปเปลี่ยนแปลงการเรียงลำดับในตัว list objectหรือถ้าจะเรียงจากมากไปน้อย
สิ่งที่ต้องระวังคือ สมาชิกแต่ละตัวใน list ต้องอยู่ในรูปแบบของข้อมูลที่สามารถนำมาเปรียบเทียบมากกว่า-น้อยกว่าได้ (อย่าง [1, 2, 'a'] หมดสิทธิ์)
ตัวเลือกอีกตัวคือ key ที่ใช้ในการเปรียบเทียบ ซึ่งทำได้โดยส่งผ่านฟังก์ชันที่รับค่า 1 ตัวแปรเข้าไปเป็น key
ข้อมูลทางเทคนิคคือการเรียงลำดับจะใช้อัลกอริทึม Timsort ซึ่งมีประสิทธิภาพที่ O(n log n) และเป็นแบบ stable (สมาชิกหลังการจัดเรียงแล้วยังคงลำดับเดิมอยู่) ครับ
มันไม่ใช่แค่ OOP เท่านั้นนะ
ReplyDeleteถ้าไม่ต้องการรักษาลำดับดั้งเดิม ควรใช้ .sort() เสมอ เพราะมันประหยัด memory ด้วย