Sort กับภาษา Python

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

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

thelordbank
PHP Full Member
PHP Full Member
โพสต์: 39
ลงทะเบียนเมื่อ: 31/07/2017 10:18 am

Sort กับภาษา Python

โพสต์ที่ยังไม่ได้อ่าน โดย thelordbank »

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

โค้ด: เลือกทั้งหมด

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

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

โค้ด: เลือกทั้งหมด

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

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

โค้ด: เลือกทั้งหมด

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

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

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

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

โค้ด: เลือกทั้งหมด

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

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

โค้ด: เลือกทั้งหมด

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

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

โค้ด: เลือกทั้งหมด

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 ได้ดังตัวอย่าง

โค้ด: เลือกทั้งหมด

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
    ตอบกลับ
    แสดง
    โพสต์ล่าสุด

ผู้ใช้งานขณะนี้

สมาชิกกำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และบุคลทั่วไป 70