Sort กับภาษา Python

แชร์ความรู้ภาษา Python ไพทอน การเขียนโปรแกรมภาษาไพทอน

Moderators: mindphp, ผู้ดูแลกระดาน

thelordbank
PHP Full Member
PHP Full Member
Posts: 39
Joined: 31/07/2017 10:18 am

Sort กับภาษา Python

Post by thelordbank »

ในภาษา Python เราสามารถทำการ Sort หรือเรียงลำดับข้อมูลได้ด้วยคำสั่ง sorted()

Code: Select all

a = [3, 2, 5 ,4, 7, 1]
sorted(a)
ผลลัพธ์ที่ได้จากโค้ดข้างต้นคือ คือ [1, 2, 3, 4, 5, 7]

หากต้องการ Sort จากหลังไปหน้าสามารถทำได้ดังนี้

Code: Select all

a = [3, 2, 5 ,4, 7, 1]
sorted(a, reverse=True)
ผลลัพธ์ที่ได้จากโค้ดข้างต้นคือ คือ [7, 5, 4, 3, 2, 1]

เรายังสามารถทำการ Sort tuple ได้ด้วย

Code: Select all

t = ('boy', 'apple', 'intel')
sorted(t)
ผลลัพธ์ที่ได้จากโค้ดข้างต้นคือ คือ ['apple', 'boy', 'intel']

คีย์ที่ใช้ในการ Sort

ในภาษา Python จะมีคีย์สำหรับใช้ในการ Sort ข้อมูลด้วย เช่น
- str.lower บังคับการเรียงลำดับเพื่อรักษาตัวพิมพ์ใหญ่ และตัวพิมพ์เล็กเหมือนกัน
- len เป็นคีย์ที่เรียงตามความยาวตัวอักษร

ตัวอย่างการใช้งานคีย์ str.lower

Code: Select all

t = ('boy', 'apple', 'intel')
sorted(t, key=str.lower)
ผลลัพธ์ที่ได้จากโค้ดข้างต้นคือ คือ ['apple', 'boy', 'intel']

ตัวอย่างการใช้งานคีย์ len

Code: Select all

t = ('boy', 'apple', 'intel')
sorted(t, key=len)
ผลลัพธ์ที่ได้จากโค้ดข้างต้นคือ คือ ['boy', 'apple', 'intel']

นอกจากนั้น เรายังสามารถกำหนดเงื่อนไขในการ Sort ข้อมูลได้ด้วย ดังตัวอย่าง

Code: Select all

student_tuples = [
        ('john', 'A', 15),
        ('jane', 'B', 12),
        ('dave', 'B', 10),
]
sorted(student_tuples, key=lambda student: student[2]) #เรียงโดยใช้ช่องที่ 3 คือ อายุ
ผลลัพธ์ที่ได้จากโค้ดข้างต้นคือ คือ [('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]

และเรายังสามารถใช้เทคนิคนี้ทำงานกับ objects ได้ดังตัวอย่าง

Code: Select all

student_objects = [
        Student('john', 'A', 15),
        Student('jane', 'B', 12),
        Student('dave', 'B', 10),
]
class Student:
	def __init__(self, name, grade, age):
		self.name = name
                self.grade = grade
                self.age = age
 
sorted(student_objects, key=lambda student: student.age)
ผลลัพธ์ที่ได้จากโค้ดข้างต้นคือ คือ [('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]

อธิบาย

สร้าง class Student ขึ้นมา โดยกำหนดฟังก์ชั่นหลักโดยกำหนดค่าพารามิเตอร์ของฟังก์ชั่น (self, name, grade, age)

- ให้ตัวแปร name แทนพารามิเตอร์ name
- ให้ตัวแปร grade แทนพารามิเตอร์ grade
- ให้ตัวแปร age แทนพารามิเตอร์ age
ต่อมา ทำการ sort ข้อมูลด้วยคำสั่ง sorted ให้ใช้ข้อมูลจาก student_objects แล้วเรียงด้วยคีย์ lambda โดยเงื่อนไขในการเรียงคือ เรียงตามคำสั่งใน class Student ตามลำดับตัวแปร age
  • Similar Topics
    Replies
    Views
    Last post

Return to “Python Knowledge”

Who is online

Users browsing this forum: No registered users and 7 guests