Python รายการ sort() พร้อมตัวอย่าง

วิธีการ sort() คืออะไร Python?

เรียงลำดับฟังก์ชันเข้า Python ช่วยจัดเรียงรายการตามลำดับจากน้อยไปหามากหรือจากมากไปหาน้อย สามารถใช้สำหรับการเรียงลำดับรายการตัวเลข สิ่งอันดับ และรายการสตริง มันไม่ได้สร้างรายการแยกต่างหากแต่แก้ไขหรือเรียงลำดับรายการต้นฉบับ

ไวยากรณ์ของวิธีการเรียงลำดับใน Python

ฟังก์ชันการเรียงลำดับมีรูปแบบดังต่อไปนี้: –

List.sort(key=…, reverse=…)

ฟังก์ชันการเรียงลำดับมีพารามิเตอร์ทางเลือก 2 ตัว ตามรายการด้านล่าง: –

  • คีย์:- ใช้เพื่อเรียงลำดับฟังก์ชันตามเกณฑ์การเรียงลำดับ
  • Reverse: – รับค่าว่าเป็นจริงหรือเท็จ หากเป็นจริง ฟังก์ชันแบบกำหนดเองนี้จะเรียงลำดับรายการจากมากไปน้อย

การเรียงลำดับรายการจากน้อยไปหามากโดยใช้วิธี Sort in Python

In Pythonตามค่าเริ่มต้น ฟังก์ชันการเรียงลำดับจะเรียงลำดับรายการจากน้อยไปหามาก รายการตามลำดับจากน้อยไปมากมีค่าต่ำสุดทางด้านซ้าย และค่าสูงสุดจะอยู่ทางด้านขวามือ

ตัวอย่าง:

Python รหัส:

base_list=["Google","Reliance","Guru99","Content","Syntax"]
base_list.sort()
print("the base list after sorting is",base_list)

Output:

the base list after sorting is ['Content', 'Google', 'Guru99', 'Reliance', 'Syntax']

คำอธิบายรหัส:

  • รายการด้านบนเป็นรายการสตริงที่กำหนดแบบสุ่ม
  • ฟังก์ชั่นการเรียงลำดับของ Python ช่วยในการเรียงลำดับรายการสุ่มจากน้อยไปหามากโดยมีความยาวต่ำสุดของคำทางด้านซ้ายและความยาวสูงสุดของคำทางด้านขวามือ

การเรียงลำดับรายการจากมากไปน้อย

ฟังก์ชันการเรียงลำดับยังช่วยให้รายการสามารถเรียงลำดับจากมากไปน้อยได้ มันสามารถกำหนดเป็นคำสั่งได้ โดยที่รายการเริ่มต้นด้วยค่าสูงสุดและลงท้ายด้วยค่าต่ำสุด

พารามิเตอร์ย้อนกลับของฟังก์ชันการเรียงลำดับถูกกำหนดให้เป็นจริงเพื่อให้รายการเรียงลำดับจากมากไปน้อย

ให้เราดูตัวอย่างด้านล่าง: –

Python รหัส:

base_list=[100,600,400,8000,50]
base_list.sort()
print("the base list after sorting is",base_list)
# Reverse Order
base_list.sort(reverse=True)
print("the base list after REVERSE sorting is",base_list)

Output:

the base list after sorting is [50, 100, 400, 600, 8000]
the base list after REVERSE sorting is [8000, 600, 400, 100, 50]

หมายเหตุ: ตรวจสอบให้แน่ใจว่าการกำหนดคำว่า "True" ให้กับพารามิเตอร์ย้อนกลับเริ่มต้นด้วยตัวพิมพ์ใหญ่ "T" เพื่อหลีกเลี่ยงข้อผิดพลาดรันไทม์

การเรียงลำดับรายการสิ่งอันดับโดยใช้วิธีการเรียงลำดับ Python

Python ทูเปิลส์ คือชุดขององค์ประกอบที่ไม่เปลี่ยนรูปซึ่งเป็นไปตามลำดับที่สั่ง Pythonฟังก์ชันการเรียงลำดับของสามารถใช้เพื่อเรียงลำดับรายการสิ่งอันดับโดยใช้ฟังก์ชันที่กำหนดเองและนิพจน์แลมบ์ดา

คุณสามารถสร้างฟังก์ชันที่กำหนดเองได้โดยไม่มีชื่อและแสดงด้วยนิพจน์แลมบ์ดา ต่อไปนี้คือรูปแบบสำหรับนิพจน์แลมบ์ดา: –

ไวยากรณ์:

Lambda arguments: expression

ไวยากรณ์ข้างต้นเทียบเท่ากับโค้ดหลามด้านล่าง:

def name (arguments):
return expression

นี่คือตัวอย่างของทูเปิลและฟังก์ชันที่ปรับแต่งเองเพื่อแสดงให้เห็นว่าฟังก์ชันการเรียงลำดับพร้อมพารามิเตอร์หลักช่วยจัดเรียงองค์ประกอบในทูเพิลได้อย่างไร:-

Python รหัส:

base_list = [('Alto', 2020, 500),('MSFT', 2022, 300),('Guru99', 2019, 1070)]
def get_key(base_list):
    return base_list[2]
base_list.sort(key=get_key,reverse=True)
print("The change in base list is as follows",base_list)

Output:

The change in the base list is as follows [('Guru99', 2019, 1070), ('Alto', 2020, 500), ('MSFT', 2022, 300)]

คำอธิบายรหัส:

  • พารามิเตอร์ย้อนกลับถูกกำหนดให้เป็นจริงเพื่อเรียงลำดับทูเพิลจากมากไปน้อย
  • ฟังก์ชั่นที่กำหนดเองจะใช้องค์ประกอบที่สองของทูเพิล
  • สิ่งนี้ถูกใช้เป็นคีย์ของฟังก์ชันการเรียงลำดับ

ให้เราดูตัวอย่างด้านล่างที่ใช้นิพจน์แลมบ์ดา:

Python รหัส:

base_list = [('Alto', 2020, 500),
('MSFT', 2022, 300),
('Guru99', 2019, 1070)]
base_list.sort(key=lambda base_list:base_list[2],reverse=True)
print("The change in base list is as follows",base_list)

Output:

The change in the base list is as follows [('Guru99', 2019, 1070), ('Alto', 2020, 500), ('MSFT', 2022, 300)]

คำอธิบาย:

  • นิพจน์แลมบ์ดาช่วยให้คุณจัดเรียงองค์ประกอบของทูเพิลจากสูงไปต่ำโดยใช้คีย์เป็นองค์ประกอบที่สองของทูเพิล
  • โปรแกรมจะตรวจสอบค่าสูงสุดขององค์ประกอบที่สองของทูเพิล

การเรียงลำดับรายการโดยใช้ Len เป็นพารามิเตอร์หลัก

Len เป็นฟังก์ชันในตัวที่ใช้กำหนดความยาวของรายการ ความยาวที่กำหนดสามารถใช้สำหรับการจัดทำดัชนีในฟังก์ชันการเรียงลำดับ เพื่อทำเช่นนี้ เรามอบหมายให้เลนเป็น Python พารามิเตอร์คีย์ของฟังก์ชันการเรียงลำดับ

ดังต่อไปนี้ Python รหัสแสดงให้เห็นถึงวิธีการใช้ฟังก์ชัน Len กับฟังก์ชันการเรียงลำดับ

Python รหัส:

base_list=["Alto", "Guru99", "Python", "Google", "Java"]
base_list.sort(key=len)
print("The sorted list based on length:",base_list)

Output:

The sorted list based on length: ['Alto', 'Java', 'Guru99', 'Python', 'Google']

คำอธิบายรหัส:

การเรียงลำดับรายการโดยใช้ Len

  • ความยาวขององค์ประกอบจะกลายเป็นดัชนีสำหรับพารามิเตอร์หลักเพื่อจัดเรียงรายการจากน้อยไปหามาก
  • ฟังก์ชัน Len จะประมาณความยาวของแต่ละองค์ประกอบที่อยู่ในรายการฐาน
  • โดยจะเก็บองค์ประกอบที่สั้นที่สุดไว้ทางด้านซ้ายและองค์ประกอบที่ใหญ่ที่สุดทางด้านขวามือ
  • ในที่นี้ คำว่า alto และ java มีความยาว 4 ซึ่งจัดเรียงไว้เป็นอันดับแรกในรายการ ตามด้วย Guru99 ซึ่งมีความยาว 6

ตัวอย่างนี้แสดงแนวคิดของพารามิเตอร์ย้อนกลับในฟังก์ชันการเรียงลำดับดังที่แสดงด้านล่าง: –

Python รหัส:

base_list=["Alto", "Guru99", "Python", "Google", "Java"]
base_list.sort(key=len,reverse=True)
print("The sorted list based on length:",base_list)

Output:

The sorted list based on length: ['Guru99', 'Python', 'Google', 'Alto', 'Java']

การเรียงลำดับรายการโดยใช้ฟังก์ชันที่ผู้ใช้กำหนดเป็นพารามิเตอร์หลัก

คุณยังสามารถใช้ฟังก์ชันที่ผู้ใช้กำหนดเป็นพารามิเตอร์หลักเพื่อเรียงลำดับรายการได้ นี่คือตัวอย่าง: –

Python รหัส:

base_list = [{'Example':'Python','year':1991},{'Example':'Alto','year':2014},{'Example':'Guru99', 'year':1995},
{'Example':'Google','year':1985},{'Example':'Apple','year':2007},{'Example':'Emails','year':2010},]
def get_year(element):
    return element['year']
base_list.sort(key=get_year)
print("The base list after sorting using explicit criteria",base_list)

Output:

The base list after sorting using explicit criteria [{'Example': 'Google', 'year': 1985}, {'Example': 'Python', 'year': 1991}, {'Example': 'Guru99', 'year': 1995}, {'Example': 'Apple', 'year': 2007}, {'Example': 'Emails', 'year': 2010}, {'Example': 'Alto', 'year': 2014}]

คำอธิบายรหัส:

  • ฟังก์ชันที่ผู้ใช้กำหนดจะถูกสร้างขึ้นเพื่อส่งกลับปี
  • พารามิเตอร์หลักใช้ฟังก์ชันที่ผู้ใช้กำหนดเป็นเกณฑ์
  • ฟังก์ชันการเรียงลำดับจะจัดเรียงรายการตามลำดับจากน้อยไปหามากตามค่าขององค์ประกอบ "ปี"

ความแตกต่างระหว่างวิธีการเรียงลำดับและวิธีการเรียงลำดับ Python

ก่อนที่จะสรุปความแตกต่าง เรามาทำความเข้าใจเกี่ยวกับรูปแบบทางไวยากรณ์ของวิธีการ Sorted กันก่อน

Python ไวยากรณ์:

sorted (list_name, reverse=…., key=..)

คำอธิบายรหัส:

  • ฟังก์ชันการเรียงลำดับจะเรียงลำดับรายการตามลำดับจากน้อยไปหามากหรือจากมากไปหาน้อย
  • ฟังก์ชันยอมรับพารามิเตอร์สามตัว โดยพารามิเตอร์สองตัวนั้นเป็นประเภทที่เป็นทางเลือก และพารามิเตอร์หนึ่งตัวเป็นประเภทที่ต้องการ
  • จำเป็นต้องมีพารามิเตอร์ list_name เมื่อใช้วิธีการ Sorted
  • วิธีการเรียงลำดับสามารถรับรายการวนซ้ำประเภทใดก็ได้เป็นอินพุต
  • พารามิเตอร์หลักและพารามิเตอร์ย้อนกลับเป็นพารามิเตอร์เสริมภายใต้วิธีการเรียงลำดับใน Python.

นี่คือตัวอย่างการใช้ฟังก์ชัน sort และ sorted Python ดังแสดงด้านล่าง: –

Python รหัส:

#Use of the Sorted method
Base_list=[11,10,9,8,7,6]
print("the original list is",Base_list)
New_list=sorted(Base_list)
print("the New list using sorted method is",New_list)
#Use of the Sort method
Base_list=[11,10,9,8,7,6]
print("the original list is",Base_list)
New_list=Base_list.sort()
print("the New list using sort method is",New_list)

Output:

the original list is [11, 10, 9, 8, 7, 6]
the new list using the sorted method is [6, 7, 8, 9, 10, 11]
the original list is [11, 10, 9, 8, 7, 6]
the new list using the sort method is None

คำอธิบายรหัส:

  • รายการดั้งเดิมถูกส่งผ่านเป็นพารามิเตอร์ที่จำเป็นสำหรับฟังก์ชันที่เรียงลำดับ
  • วิธีการเรียงลำดับจะส่งกลับรายการใหม่นอกเหนือจากรายการเดิม
  • เนื่องจากไม่มีการส่งพารามิเตอร์เพิ่มเติมไปยังวิธีการเรียงลำดับ รายการใหม่จึงเรียงลำดับตามค่าเริ่มต้นจากน้อยไปหามาก
  • ฟังก์ชันการเรียงลำดับไม่ได้สร้างรายการใหม่

ต่อไปนี้คือจุดสำคัญของความคล้ายคลึงและความแตกต่าง: –

ฟังก์ชั่นการเรียงลำดับ ฟังก์ชันการเรียงลำดับ
ฟังก์ชันการเรียงลำดับใน Python เป็นฟังก์ชันในตัวที่รับ list_name เป็นพารามิเตอร์ที่ต้องการ ฟังก์ชันการเรียงลำดับไม่ได้ใช้รายการดั้งเดิมเป็นพารามิเตอร์
วิธีการเรียงลำดับส่งคืนรายการใหม่ ฟังก์ชันการเรียงลำดับไม่ส่งคืนรายการใหม่
ควรใช้ฟังก์ชันการเรียงลำดับสำหรับรายการที่ทำซ้ำได้ ควรใช้ฟังก์ชันการเรียงลำดับสำหรับรายการที่ทำซ้ำไม่ได้
มันไม่ได้แก้ไขรายการดั้งเดิมและช่วยให้เราเก็บข้อมูลดั้งเดิมได้ ฟังก์ชันการเรียงลำดับจะปรับเปลี่ยนฟังก์ชันดั้งเดิมและด้วยเหตุนี้จึงใช้พื้นที่หน่วยความจำน้อยลง

เมื่อใดจึงควรใช้วิธีเรียงลำดับหรือวิธีการเรียงลำดับ?

ให้เรายกตัวอย่างที่ต้องจัดเรียงข้อมูลการแข่งขัน โปรแกรมจะใช้หมายเลขวิ่งและเวลาที่ใช้เป็นวินาทีในการจบการแข่งขัน

Python รหัส:

from collections import namedtuple
Base = namedtuple('Runner', 'bibnumber duration')
blist = []
blist.append(Base('8567', 1500))
blist.append(Base('5234', 1420))
blist.append(Base('2344', 1600))
blist.append(Base('2342', 1490))
blist.append(Base('23444', 1620))
blist.append(Base('6674', 1906))
print("original list",blist)
blist.sort(key=lambda x: getattr(x, 'duration'))
top_five_result = blist[:5]
print("Results using sort function",top_five_result)
r_blist=sorted(blist,key=lambda x: getattr(x, 'duration'))
top_five_result = r_blist[:5]
print("Results using sorted function",top_five_result)

Output:

original list [Runner(bibnumber='8567', duration=1500), Runner(bibnumber='5234', duration=1420), Runner(bibnumber='2344', duration=1600), Runner(bibnumber='2342', duration=1490), Runner(bibnumber='23444', duration=1620), Runner(bibnumber='6674', duration=1906)]

Results using sort function [Runner(bibnumber='5234', duration=1420), Runner(bibnumber='2342', duration=1490), Runner(bibnumber='8567', duration=1500), Runner(bibnumber='2344', duration=1600), Runner(bibnumber='23444', duration=1620)]

Results using sorted function [Runner(bibnumber='5234', duration=1420), Runner(bibnumber='2342', duration=1490), Runner(bibnumber='8567', duration=1500), Runner(bibnumber='2344', duration=1600), Runner(bibnumber='23444', duration=1620)]

คำอธิบายรหัส:

  • รายการฐานจะถูกจัดเรียงโดยใช้ทั้งฟังก์ชันการเรียงลำดับและฟังก์ชันการเรียงลำดับ
  • รายการฐานจะหายไปเมื่อมีการใช้ฟังก์ชันการเรียงลำดับ
  • ไม่ควรใช้ฟังก์ชันการเรียงลำดับกับชุดข้อมูลต้นฉบับ ควรใช้เมื่อมีเวอร์ชันสำเนาของชุดข้อมูลต้นฉบับ
  • ฟังก์ชัน Sorted จะคงรายการเดิมไว้ มันไม่ได้แทนที่มัน
  • ช่วยให้สามารถตรวจสอบย้อนกลับได้ดีขึ้นและการจัดการข้อมูลที่มีประสิทธิภาพ

สรุป

  • ฟังก์ชั่น sort ช่วยในการเรียงลำดับรายการตัวเลขและสตริงใน Python
  • นอกจากนี้ยังสามารถช่วยในการเรียงลำดับสิ่งอันดับ
  • Reverse และ key เป็นพารามิเตอร์ทางเลือกของฟังก์ชัน
  • หากจำเป็นต้องมีรายการแยกต่างหากและมีรายการต้นฉบับในเวลาเดียวกัน ก็จะต้องใช้ฟังก์ชันการเรียงลำดับ มิฉะนั้น ก็จะต้องใช้ฟังก์ชันการเรียงลำดับเพื่อให้ใช้หน่วยความจำได้เหมาะสมที่สุด