บทความนี้จะครอบคลุมคำแนะนำเกี่ยวกับการเรียงลำดับรายการใน Python ออบเจ็กต์รายการ Python คือคอลเล็กชันของรายการที่คั่นด้วยเครื่องหมายจุลภาคตั้งแต่หนึ่งรายการขึ้นไป เป็นวัตถุที่ทำซ้ำได้และองค์ประกอบสามารถเข้าถึงได้โดยการวนซ้ำรายการโดยใช้คำสั่งวนรอบและนิพจน์อื่นๆ คุณสามารถเรียงลำดับรายการ Python ได้โดยใช้วิธีการเรียงลำดับและเรียงลำดับ ซึ่งทั้งสองวิธีได้อธิบายไว้ในบทความ ตัวอย่างโค้ดทั้งหมดในบทความนี้ได้รับการทดสอบด้วย Python 3.9.5 ใน Ubuntu 21.04
วิธีการจัดเรียง
วิธีการเรียงลำดับจะเรียงลำดับรายการแบบแทนที่ กล่าวอีกนัยหนึ่ง มันจะแก้ไขรายการวัตถุที่คุณจะจัดเรียงและจัดลำดับองค์ประกอบใหม่ หากคุณไม่ต้องการรายการดั้งเดิมและไม่สนใจว่ารายการจะเปลี่ยนลำดับขององค์ประกอบแบบแทนที่ นี่เป็นวิธีที่มีประสิทธิภาพที่สุดใน Python ในการจัดเรียงรายการ พิจารณาตัวอย่างนี้:
NS= [2, 8, 6, 4]
NS.เรียงลำดับ()
พิมพ์ (NS)
หลังจากรันตัวอย่างโค้ดด้านบนแล้ว คุณควรได้ผลลัพธ์ต่อไปนี้:
[2, 4, 6, 8]
คำสั่งแรกในโค้ดตัวอย่างกำหนดรายการ ถัดไป วิธีการเรียงลำดับถูกเรียกตามรายการ เมื่อคุณพิมพ์รายการ คุณจะเห็นว่าลำดับของรายการเดิมมีการเปลี่ยนแปลง
โดยค่าเริ่มต้น Python จะเรียงลำดับรายการจากน้อยไปมาก หากคุณต้องการเรียงลำดับรายการจากมากไปหาน้อย ให้ใช้วิธีย้อนกลับ ดังที่แสดงในตัวอย่างโค้ดด้านล่าง:
NS= [2, 8, 6, 4]
NS.เรียงลำดับ()
NS.ย้อนกลับ()
พิมพ์ (NS)
หลังจากรันตัวอย่างโค้ดด้านบนแล้ว คุณควรได้ผลลัพธ์ต่อไปนี้:
[8, 6, 4, 2]วิธีย้อนกลับยังเปลี่ยนรายการ Python แทนที่โดยไม่ต้องสร้างรายการใหม่
หากรายการของคุณมีองค์ประกอบสตริง การเรียกใช้วิธีการจัดเรียงจะเรียงลำดับตามตัวอักษรโดยเรียงลำดับสัญลักษณ์และตัวเลขก่อน ดูตัวอย่างโค้ดด้านล่าง:
NS= ['NS', 'ถึง', 'กับ', '4', '#']NS.เรียงลำดับ()
พิมพ์ (NS)
หลังจากรันตัวอย่างโค้ดด้านบนแล้ว คุณควรได้ผลลัพธ์ต่อไปนี้:
['#', '4', 'ถึง', 'NS', 'กับ']คุณยังสามารถใช้วิธีย้อนกลับในรายการที่มีองค์ประกอบสตริง
NS= ['NS', 'ถึง', 'กับ', '4', '#']NS.เรียงลำดับ()
NS.ย้อนกลับ()
พิมพ์ (NS)
หลังจากรันตัวอย่างโค้ดด้านบนแล้ว คุณควรได้ผลลัพธ์ต่อไปนี้:
['กับ', 'NS', 'ถึง', '4', '#']วิธีการเรียงลำดับ
วิธีการเรียงลำดับยังเรียงลำดับรายการ Python ในลักษณะเดียวกับวิธีการเรียงลำดับ อย่างไรก็ตาม แทนที่จะแก้ไขรายการเดิม จะส่งคืนรายการใหม่เพื่อให้รายการเดิมของคุณไม่ถูกแตะต้องในกรณีที่คุณต้องการนำกลับมาใช้ใหม่ พิจารณารหัสด้านล่าง:
รายการ1= ['NS', 'ถึง', 'กับ', '4', '#']รายการ2= จัดเรียง(รายการ1)
พิมพ์ (รายการ1,รายการ2)
หลังจากรันตัวอย่างโค้ดด้านบนแล้ว คุณควรได้ผลลัพธ์ต่อไปนี้:
['NS', 'ถึง', 'กับ', '4', '#'] ['#', '4', 'ถึง', 'NS', 'กับ']คุณสามารถเห็นในผลลัพธ์ที่ list1 เหมือนเดิม และตอนนี้ list2 ได้จัดเรียงองค์ประกอบแล้ว คุณยังสามารถใช้วิธีย้อนกลับบน list2 เพื่อเปลี่ยนวิธีการสั่งซื้อ
อาร์กิวเมนต์ย้อนกลับ
คุณสามารถใช้อาร์กิวเมนต์ reverse เป็นทางเลือกในการย้อนกลับฟังก์ชันทั้งในวิธี sort และ sort เพื่อรับรายการที่เรียงลำดับจากมากไปหาน้อย เพียงใส่ค่า True เพื่อเปลี่ยนลำดับการจัดเรียง:
รายการ1= ['NS', 'ถึง', 'กับ', '4', '#']รายการ2= จัดเรียง(รายการ1,ย้อนกลับ=จริง)
พิมพ์ (รายการ1,รายการ2)
หลังจากรันตัวอย่างโค้ดด้านบนแล้ว คุณควรได้ผลลัพธ์ต่อไปนี้:
['NS', 'ถึง', 'กับ', '4', '#'] ['กับ', 'NS', 'ถึง', '4', '#']การใช้ฟังก์ชันคีย์เพื่อระบุลอจิกของคุณเองสำหรับการจัดเรียงองค์ประกอบของรายการ
ทั้งในวิธี sort และ sorted คุณสามารถระบุอาร์กิวเมนต์คีย์เพิ่มเติมที่ใช้ฟังก์ชันที่เรียกได้เป็นค่าของมัน อาร์กิวเมนต์คีย์นี้สามารถกำหนดฟังก์ชันที่มีอยู่จากโมดูล Python ในตัว หรือคุณสามารถจัดหาฟังก์ชันของคุณเองด้วยตรรกะที่กำหนดเอง ดูตัวอย่างโค้ดด้านล่าง:
รายการ1= ['เอบีซี', 'ไซซ์', 'เจเคแอล']รายการ2= จัดเรียง(รายการ1,กุญแจ=เลน)
พิมพ์ (รายการ1,รายการ2)
รายการ1.เรียงลำดับ(กุญแจ=เลน)
พิมพ์ (รายการ1)
หลังจากรันตัวอย่างโค้ดด้านบนแล้ว คุณควรได้ผลลัพธ์ต่อไปนี้:
['เอบีซี', 'ไซซ์', 'เจเคแอล'] ['ไซซ์', 'เจเคแอล', 'เอบีซี']['ไซซ์', 'เจเคแอล', 'เอบีซี']
ตัวอย่างโค้ดแสดงการใช้อาร์กิวเมนต์คีย์ทั้งในวิธีเรียงลำดับและจัดเรียง ฟังก์ชันที่จัดให้เรียกว่า len ซึ่งกำหนดความยาวของอ็อบเจ็กต์สตริงหรือ iterable ฟังก์ชันหรือ callable เดิมควรรับอาร์กิวเมนต์เดียวเท่านั้น คุณกำหนดให้กับอาร์กิวเมนต์คีย์โดยไม่ต้องใช้วงเล็บปีกกา ฟังก์ชัน callable ที่จัดหาให้กับอาร์กิวเมนต์คีย์ถูกเรียกตามแต่ละองค์ประกอบของรายการ ค่าที่ส่งคืนจากเมธอดที่เรียกได้นี้จะถูกใช้เป็นคีย์สำหรับการเรียงลำดับรายการ ดังนั้น การจัดหาฟังก์ชัน len ให้กับอาร์กิวเมนต์หลักจะจัดเรียงองค์ประกอบของรายการตามลำดับความยาว กล่าวคือ จากสั้นที่สุดไปยาวที่สุด ตามที่ระบุไว้ก่อนหน้านี้ คุณสามารถใช้วิธีย้อนกลับเพื่อย้อนกลับวิธีการจัดเรียงได้เสมอ
คุณยังสามารถใช้ฟังก์ชันแบบกำหนดเองของคุณเองหรือฟังก์ชันแลมบ์ดาเส้นเดียวที่คืนค่าของนิพจน์เดียว ดูตัวอย่างโค้ดด้านล่างซึ่งรายการมีลังผลไม้ tuples ปัจจุบัน:
รายการ1= [('มะม่วง', 99), ('ส้ม', 51), ('กล้วย', 76)]รายการ1.เรียงลำดับ(กุญแจ=แลมบ์ดาสินค้าคงคลัง: สินค้าคงคลัง[1])
พิมพ์ (รายการ1)
หลังจากรันตัวอย่างโค้ดด้านบนแล้ว คุณควรได้ผลลัพธ์ต่อไปนี้:
[('ส้ม', 51), ('กล้วย', 76), ('มะม่วง', 99)]ฟังก์ชันแลมบ์ดามาพร้อมกับรายการอาร์กิวเมนต์ ซึ่งเป็นองค์ประกอบของรายการในรูปแบบทูเพิล จากนั้นจะส่งกลับองค์ประกอบที่สองของแต่ละทูเพิลเป็นคีย์ (ที่ดัชนี 1) ฟังก์ชัน sort จะเรียงลำดับ tuples ทั้งหมดตามองค์ประกอบที่สองในลำดับจากน้อยไปมาก คุณยังสามารถใช้ฟังก์ชันย้อนกลับหรืออาร์กิวเมนต์ย้อนกลับในผลลัพธ์สุดท้ายเพื่อย้อนกลับลำดับการเรียงลำดับได้
บทสรุป
นี่เป็นวิธีที่คุณสามารถจัดเรียงเนื้อหาของรายการที่ทำซ้ำได้ใน Python อาร์กิวเมนต์คีย์ช่วยให้คุณเขียนตรรกะการจัดเรียงแบบกำหนดเองได้ เหมาะสำหรับแอปพลิเคชันที่อาจมีความต้องการแตกต่างจากวิธีการจัดเรียงในตัว