วิธีจัดเรียงรายการใน Python
เผยแพร่แล้ว: 2022-03-30บทความนี้จะสอนวิธีจัดเรียงรายการใน Python
ใน Python คุณสามารถใช้เมธอด sort() เพื่อเรียงลำดับรายการ หรือคุณสามารถใช้ฟังก์ชัน sorted() ในตัวเพื่อรับสำเนาที่จัดเรียงของรายการ
ในบทช่วยสอนนี้ คุณจะได้เรียนรู้:
- ไวยากรณ์ของเมธอด
sort()
และฟังก์ชันsorted()
- ตัวอย่างโค้ดของการเรียงลำดับรายการจากน้อยไปมากและจากมากไปน้อย
- ปรับแต่งการเรียงลำดับโดยใช้พารามิเตอร์
key
- ความแตกต่างระหว่าง
sort()
กับsorted()
เริ่มกันเลย!
ไวยากรณ์ของ Python sort() Method
วิธีการ sort()
ทำหน้าที่ในรายการ Python และจัดเรียงรายการให้เข้าที่—และแก้ไขรายการดั้งเดิม
ไวยากรณ์สำหรับวิธีการ sort()
ของ Python คือ:
<list>.sort(reverse = True | False, key = <func>)
มาแยกวิเคราะห์ไวยากรณ์ด้านบนกัน
-
<list>
เป็นอ็อบเจ็กต์รายการ Python ที่ถูกต้อง -
reverse
เป็นพารามิเตอร์ ทางเลือก ที่รับ True หรือ False - ค่าเริ่มต้นของ
reverse
คือFalse
และรายการจะเรียงลำดับจากน้อยไปมาก ให้True
เพื่อเรียงลำดับรายการจากมากไปหาน้อย -
key
ยังเป็นพารามิเตอร์ ทางเลือก ที่ตั้งค่าเป็น<func>
-
<func>
สามารถเป็นฟังก์ชันในตัวหรือฟังก์ชันที่ผู้ใช้กำหนดเองได้
ในส่วนถัดไป คุณจะเริ่มเขียนโค้ดตัวอย่างง่ายๆ
วิธีจัดเรียงรายการ Python ตามลำดับจากน้อยไปมาก
พิจารณารายการ nums
หากต้องการเรียงลำดับรายการจากน้อยไปมาก คุณสามารถเรียกใช้เมธอด sort()
ในรายการได้
เรียกใช้ข้อมูลโค้ดต่อไปนี้
nums = [25,13,6,17,9] nums.sort() print(nums) # Output: [6, 9, 13, 17, 25]
รายการ nums
ได้รับการเรียงลำดับจากน้อยไปมาก และรายการเดิมได้รับการแก้ไข สิ่งนี้เรียกว่า การเรียงลำดับแบบแทนที่
วิธีจัดเรียงรายการ Python ตามลำดับจากมากไปน้อย
หากต้องการเรียงลำดับรายการจากมากไปหาน้อย ให้ตั้งค่า reverse
เป็น True
ดังที่แสดงด้านล่าง
nums = [25,13,6,17,9] nums.sort(reverse = True) print(nums) # Output: [25, 17, 13, 9, 6]
คุณจะเห็นว่าขณะนี้รายการถูกจัดเรียงจากมากไปหาน้อย
วิธีใช้คีย์กับ Python sort() Method
ในส่วนนี้ ลองใช้พารามิเตอร์ key
และปรับแต่งการเรียงลำดับ
ที่นี่ mod5()
เป็นฟังก์ชันที่ใช้ตัวเลข x
และคืนค่าส่วนที่เหลือเมื่อตัวเลข x
หารด้วย 5
def mod5(x): return x % 5
และเราต้องการใช้ฟังก์ชันข้างต้นเป็น key
ตอนนี้ เรียกใช้เซลล์รหัสต่อไปนี้
nums = [25,13,6,17,9] nums.sort(key = mod5) print(nums) # Output: [25, 6, 17, 13, 9]
ใช้เวลาสักครู่เพื่อแยกวิเคราะห์ผลลัพธ์
สังเกตว่าแทนที่จะจัดเรียงแบบปกติ ตอนนี้คุณกำลังปรับแต่งการเรียงลำดับตาม key
ซึ่งก็คือ mod5
- ตอนนี้จำนวนที่เหลือขั้นต่ำเมื่อหารด้วย 5 มาก่อน
- และจำนวนที่ปล่อยให้เศษเหลือมากที่สุดเมื่อหารด้วย 5 เป็นองค์ประกอบสุดท้ายในรายการที่จัดเรียง
หากต้องการตรวจสอบกรณีนี้ ให้เรียกใช้ข้อมูลโค้ดต่อไปนี้
nums = [25,13,6,17,9] for num in nums: print(f"{num} leaves remainder {num%5} when divided by 5") # Output 25 leaves remainder 0 when divided by 5 13 leaves remainder 3 when divided by 5 6 leaves remainder 1 when divided by 5 17 leaves remainder 2 when divided by 5 9 leaves remainder 4 when divided by 5
5 หาร 25 ได้พอดี และส่วนที่เหลือเป็น 0 นั่นคือองค์ประกอบแรกในรายการที่จัดเรียง 6 เหลือเศษ 1, มันจึงเป็นองค์ประกอบที่สอง, ไปเรื่อยๆ 9 จะเหลือเศษ 4 เมื่อหารด้วย 5 และเป็นองค์ประกอบสุดท้ายในรายการที่จัดเรียง
แทนที่จะกำหนดฟังก์ชันแยกต่างหาก คุณอาจใช้ฟังก์ชันแลมบ์ดาด้วย ใน Python แลมบ์ดาเป็นฟังก์ชันนิรนามแบบบรรทัดเดียว lambda args : expression คืนค่า นิพจน์ ที่คำนวณจาก args
ตอนนี้ มาเขียนการเรียงลำดับด้านบนใหม่โดยใช้นิพจน์แลมบ์ดาดังที่แสดงด้านล่าง
nums = [25,13,6,17,9] nums.sort(key = lambda x:x%5) print(nums) # Output: [25, 6, 17, 13, 9]
จนถึงตอนนี้ คุณได้เรียนรู้วิธีจัดเรียงรายการตัวเลขแล้ว ต่อไป มาดูกันว่าคุณจะเรียงลำดับรายการสตริงใน Python ได้อย่างไร
วิธีจัดเรียงรายการ Python ตามลำดับตัวอักษร
ในส่วนนี้ คุณจะได้เรียนรู้การจัดเรียงรายการสตริง พร้อมตัวอย่างที่ได้รับแรงบันดาลใจจากแฮร์รี่ พอตเตอร์
ในตัวอย่างของเรา students
คือรายชื่อนักเรียนที่ฮอกวอตส์ และเราต้องการจัดเรียงตามลำดับตัวอักษรของชื่อพวกเขา
เมื่อเรียงลำดับรายการสตริง การเรียงลำดับเริ่มต้นจะอยู่ในลำดับตามตัวอักษร
students = ["Harry","Ron","Hermione","Draco","Cedric"]
มาพิมพ์รายการที่เรียงลำดับเพื่อตรวจสอบผลลัพธ์ของการเรียงลำดับกัน
students.sort() print(students) # Output ['Cedric','Draco', 'Harry', 'Hermione', 'Ron']
วิธีจัดเรียงรายการ Python ตามลำดับตัวอักษรย้อนกลับ
ในการเรียงลำดับรายการตามลำดับตัวอักษรย้อนกลับ ให้ตั้งค่า reverse
= True
ดังที่แสดงในข้อมูลโค้ดด้านล่าง
students.sort(reverse = True) print(students) # Output ['Ron', 'Hermione', 'Harry', 'Draco', 'Cedric']
จากผลลัพธ์ คุณจะเห็นว่ารายการถูกจัดเรียงในลำดับที่กลับกันจริงๆ
วิธีใช้พารามิเตอร์คีย์ ปรับแต่ง Sort
ในส่วนนี้ มาปรับแต่งการจัดเรียงโดยใช้พารามิเตอร์ key
ที่เป็นตัวเลือก
พิจารณารายการต่อไปนี้ houses
.
houses = [ {1:"Draco","house":"Slytherin"}, {2:"Harry","house":"Gryffindor"}, {3:"Cedric","house":"Hufflepuff"} ]
ที่นี่ houses
เป็นรายการพจนานุกรม พจนานุกรมแต่ละชุดมีคู่คีย์-ค่าสองคู่ คู่แรกระบุชื่อนักเรียนและอีกคู่หนึ่งเป็นบ้านที่พวกเขาเป็นสมาชิก
ตอนนี้ เราต้องการจัดเรียงรายชื่อ บ้าน ตามลำดับตัวอักษรของบ้านที่ พวกเขาเป็นเจ้าของ
อย่างที่คุณอาจเดาได้ในตอนนี้ เราควรตั้งค่าพารามิเตอร์ key
เป็นบ้านของนักเรียนแต่ละคน
ในการเรียกค้นบ้านของนักเรียนแต่ละคน คุณสามารถกำหนดฟังก์ชัน returnHouse()
ดังที่แสดงด้านล่าง
def returnHouse(student): return student['house']
ฟังก์ชันนี้จะคืนค่าบ้านของนักเรียนคนนั้น
ตอนนี้คุณสามารถเรียกใช้เมธอด sort()
ในรายการบ้านได้ดังที่แสดง
houses.sort(key=returnHouse)
ในผลลัพธ์ด้านล่าง สังเกตว่ารายการถูกจัดเรียงตามบ้าน ไม่ใช่ชื่อของนักเรียน นั่นเป็นเหตุผลที่เรามีกริฟฟินดอร์ ฮัฟเฟิลพัฟ และสลิธีริน เรียงตามตัวอักษร
print(houses) # Output [{2: 'Harry', 'house': 'Gryffindor'}, {3: 'Cedric', 'house': 'Hufflepuff'}, {1: 'Draco', 'house': 'Slytherin'}]
ในการกำหนดพารามิเตอร์ key
ตามนั้น คุณสามารถใช้ฟังก์ชันแลมบ์ดาได้เช่นกัน สำหรับทุกรายการ ฟังก์ชันนี้จะคืนค่าบ้านสำหรับรายการในรายการนั้น
เรียกใช้เซลล์รหัสต่อไปนี้เพื่อตรวจสอบสิ่งนี้
houses.sort(key=lambda student:student["house"]) print(houses) # Output [{2: 'Harry', 'house': 'Gryffindor'}, {3: 'Cedric', 'house': 'Hufflepuff'}, {1: 'Draco', 'house': 'Slytherin'}]
ในตัวอย่างทั้งหมด คุณได้ใช้เมธอด sort()
ในรายการ และตอนนี้คุณก็รู้ว่ามันปรับเปลี่ยนรายการเดิม
จะทำอย่างไรถ้าคุณต้องการรักษารายการเดิมไว้แต่ได้รับสำเนาที่จัดเรียงของรายการ
ใน Python คุณสามารถใช้ฟังก์ชัน sorted()
เพื่อทำสิ่งนี้
ไวยากรณ์ของ Python sorted() Function
ฟังก์ชัน sorted()
ใช้ในรายการหรือคอลเลกชันใด ๆ เป็นอาร์กิวเมนต์ และส่งคืนสำเนาที่จัดเรียงของรายการ—และรายการต้นฉบับจะไม่ถูกแก้ไข
ไวยากรณ์สำหรับฟังก์ชัน sorted()
ของ Python คือ:
<sorted_copy> = sorted(<list>, reverse = True | False, key = <func>)
สังเกตว่าไวยากรณ์คล้ายกับวิธีการ sort()
ที่เราเห็นก่อนหน้านี้อย่างไร
-
<list>
เป็นอ็อบเจ็กต์รายการ Python ที่ถูกต้องและเป็นพารามิเตอร์ ที่จำเป็น -
reverse
และkey
เป็นพารามิเตอร์ เสริม
หมายเหตุ : ฟังก์ชัน sorted() ต่างจากเมธอด
sort()
ที่ทำหน้าที่เฉพาะกับรายการเท่านั้น สามารถใช้ sortedsorted()
เพื่อจัดเรียง Python iterable ใด ๆ ของ Python เช่น รายการ สตริง และพจนานุกรม
วิธีจัดเรียงรายการ Python โดยใช้ sorted () Function
#1. ในตัวอย่างนี้ nums
คือรายการตัวเลข
คุณสามารถเรียกใช้ฟังก์ชัน sorted sorted()
โดยมี nums
เป็นอาร์กิวเมนต์ และกำหนดให้กับรายการ sorted_nums1
nums = [25,13,6,17,9] sorted_nums1 = sorted(nums) print(sorted_nums1) # Output: [6, 9, 13, 17, 25]
ในผลลัพธ์ด้านบน คุณจะเห็นว่ามีการจัดเรียง nums
ตามลำดับจากน้อยไปมากตามค่าเริ่มต้น
นอกจากนี้ โปรดสังเกตว่า nums
รายการดั้งเดิมจะไม่ถูกแก้ไข เนื่องจาก sorted()
ส่งคืนรายการใหม่ สิ่งนี้ได้รับการยืนยันด้านล่าง
print(nums) # Output: [25, 13, 6, 17, 9]
#2 . ตอนนี้ ตั้งค่าพารามิเตอร์ทางเลือก reverse
เป็น True
และรับ sorted_nums2
ดังที่แสดงในเซลล์โค้ดด้านล่าง sorted_nums2
เป็นรายการใหม่ที่มีรายการที่เรียงลำดับจากมากไปหาน้อย
sorted_nums2 = sorted(nums,reverse = True) print(sorted_nums2) # Output: [25, 17, 13, 9, 6]
#3. ในตัวอย่างนี้ เรามาทำงานกับรายการสตริงกัน
เช่นเดียวกับตัวอย่างก่อนหน้านี้ การเรียกใช้ฟังก์ชัน sorted()
จะคืนค่ารายการใหม่ และรายการจะเรียงลำดับตามตัวอักษร
fruits = ['pears','strawberry','apple','pineapple','blueberry'] sorted_fr1 = sorted(fruits) print(sorted_fr1) # Output: ['apple', 'blueberry', 'pears', 'pineapple', 'strawberry']
#4. ตอนนี้ มาปรับแต่งการจัดเรียงโดยใช้พารามิเตอร์ key
ที่เป็นตัวเลือก ตั้งค่า key
เป็น len
การดำเนินการนี้จะจัดเรียงรายการตามความยาวของสตริง
หมายเหตุ: ใน Python ฟังก์ชัน
len()
ในตัวจะใช้ iterable ใดๆ เช่น รายการ สตริง tuples และอื่นๆ และส่งคืนความยาวของ iterable
สตริงที่มีความยาวสั้นที่สุดจะปรากฏเป็นอันดับแรกในรายการที่จัดเรียง และสตริงที่ยาวที่สุดจะปรากฏที่ส่วนท้ายของรายการที่จัดเรียง
fruits = ['pear','strawberry','apple','pineapple','blueberry'] sorted_fr2 = sorted(fruits,key=len) print(sorted_fr2) # Output: ['pear', 'apple', 'pineapple', 'blueberry', 'strawberry']
ในผลลัพธ์ข้างต้น ลูกแพร์ เป็นสตริงที่สั้นที่สุด และ สตรอเบอรี่ เป็นสตริงที่ยาวที่สุด
Python sort() วิธีการเทียบกับ sorted() Function
จนถึงตอนนี้ คุณได้เรียนรู้วิธีใช้เมธอด sort()
และฟังก์ชัน sorted()
แล้ว ในส่วนนี้ เรามาแจกแจงความแตกต่างระหว่างสองวิธีนี้กัน
Python .sort() วิธีการ | Python sorted () ฟังก์ชั่น |
จัดเรียงรายการให้เข้าที่—แก้ไขรายการเดิม | ส่งกลับรายการที่เรียงลำดับใหม่ |
ใช้งานได้กับรายการ Python เท่านั้น | ทำงานร่วมกับ Python iterables เช่น รายการ สตริง และคอลเล็กชันอื่นๆ |
มีประเภทส่งคืนเป็น None | ส่งคืนสำเนาที่จัดเรียงของ iterable |
สรุป
ฉันหวังว่าคุณจะพบว่าบทช่วยสอนรายการ Python นี้มีประโยชน์
มาสรุปสิ่งที่เราได้กล่าวถึงอย่างรวดเร็ว
- ใช้ list.sort(reverse = True | False, key = <func>) พร้อมตัวเลือกการ ย้อนกลับ และพารามิเตอร์ คีย์ เพื่อจัดเรียงรายการ
- ใช้ sorted(list, reverse = True | False, key = <func>) เพื่อรับสำเนาที่จัดเรียงของรายการ
ตอนนี้ คุณได้เรียนรู้วิธีจัดเรียงรายการ Python แล้ว ให้เรียนรู้เกี่ยวกับความเข้าใจรายการใน Python หรือคุณสามารถเรียนรู้วิธีจัดการไฟล์หรือทำงานกับไฟล์ JSON ใน Python ได้เช่นกัน
คุณอาจลองใช้ตัวอย่างที่ให้ไว้ด้านบนใน Geekflare Online Python Compiler