วิธีจัดเรียงรายการใน Python

How Sort Lists Python



บทความนี้จะครอบคลุมคำแนะนำเกี่ยวกับการเรียงลำดับรายการใน 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 อาร์กิวเมนต์คีย์ช่วยให้คุณเขียนตรรกะการจัดเรียงแบบกำหนดเองได้ เหมาะสำหรับแอปพลิเคชันที่อาจมีความต้องการแตกต่างจากวิธีการจัดเรียงในตัว