Python: Sự khác nhau giữa sort() và sorted() trong Python

Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực

Python hỗ trợ hai phương thức tích hợp để thực hiện thao tác sắp xếp trên bất kỳ sequence nào.

  1. sort()
  2. sorted()

Phương thức sort() không trả về gì và thay đổi sequence ban đầu, trong khi phương thức sorted() tạo ra một kiểu sequence mới có chứa phiên bản đã sắp xếp của sequence đã cho.

Phương thức sorted()

  • Đây là một trong những phương thức linh hoạt nhất.
  • Nó cũng có thể được sử dụng để sắp xếp list, tuple và dictionary. Nó hoạt động trên các sequence, chẳng hạn như list, tuple hoặc string, cũng như các collection như dictionary, set, hoặc frozenset.
  • Theo mặc định, nó sắp xếp theo thứ tự tăng dần nhưng cũng có thể sắp xếp giảm dần bằng cách sử dụng tham số reverse, tức là, nếu tham số reverse được đặt thành True, nó sẽ sắp xếp từ điển theo thứ tự giảm dần.
  • Điểm đặc biệt của phương thức sorted() là nó không ảnh hưởng đến trình tự ban đầu của đối tượng, tức là nó tạo ra một bản sao đã được sắp xếp của đối tượng và trả về nó.

Cú pháp của phương thức sorted()

sorted(iterable, key, reverse = [False | True])

Trong đó:

  • iterable: Đây là đối tượng Python cần được sắp xếp. Nó có thể là một sequence, tức là một list, tupble hoặc string, hoặc một collection, tức là dictionary, set, hoặc frozenset.
  • key: Đây là tham số tùy chọn. Điều này làm cơ sở để so sánh trong khi sắp xếp.
  • reverse: Đây là tham số tùy chọn. Nó là một biến boolean, tức là nếu được đặt thành True, nó sẽ sắp xếp dữ liệu theo thứ tự giảm dần, nếu không nó sẽ sắp xếp theo thứ tự tăng dần. Giá trị mặc định của reverse là False.

Kiểu trả về của sorted()

Phương thức sorted() trả về một danh sách các mục được sắp xếp từ bất kỳ thứ gì có thể lặp lại mà bạn truyền vào.

Ví dụ về sorted()

Ví dụ 1: Sử dụng phương thức sorted() với list.

list1 = [5, 4, 2, 1, 3]
print("List ban đầu:", list1)
print("List sau khi sắp xếp tăng:", sorted(list1))
print("List sau khi sắp xếp giảm:", sorted(list1, reverse=True))

Kết quả:

List ban đầu: [5, 4, 2, 1, 3]
List sau khi sắp xếp tăng: [1, 2, 3, 4, 5]
List sau khi sắp xếp giảm: [5, 4, 3, 2, 1]

Ví dụ 2: Sử dụng sorted() với set.

set1 = {8, 9, 4, 6, 7}
print("Set ban đầu:", set1)
print("Phương thức sorted() trả về một list:", sorted(set1))

Kết quả:

Set ban đầu: {4, 6, 7, 8, 9}
Set sau khi sắp xếp tăng: [4, 6, 7, 8, 9]

Ví dụ 3: Sử dụng sorted() với dictionary.

dict1 = {'a': 2, 'b': 1, 'c': 3}
print("Dictionary ban đầu:", dict1)
print("Phương thức sorted() trả về một list:", sorted(dict1))

Kết quả:

Dictionary ban đầu: {'a': 2, 'b': 1, 'c': 3}
Dictionary sau khi sắp xếp tăng: ['a', 'b', 'c']

Ví dụ 4: Sử dụng sorted() với tuple.

tuple1 = (5, 2, 6, 9, 1)
print("Tuple ban đầu:", tuple1)
print("Phương thức sorted() trả về một list:", sorted(tuple1))

Kết quả:

Tuple ban đầu: (5, 2, 6, 9, 1)
Tuple sau khi sắp xếp tăng: [1, 2, 5, 6, 9]

Ví dụ 5: Sử dụng sorted() với string.

string1 = "V1Study"
print("String ban đầu:", string1)
print("Phương thức sorted trả về một list:", sorted(string1))

Kết quả:

String ban đầu: V1Study
Phương thức sorted trả về một list: ['1', 'S', 'V', 'd', 't', 'u', 'y']

Như bạn có thể thấy từ các ví dụ trên, phương thức sorted() trả về một danh sách các mục được sắp xếp từ bất kỳ thứ gì có thể lặp lại mà bạn truyền vào.

Phương thức sort()

  • Phương thức sort() được sử dụng để thực hiện thao tác sắp xếp giống như phương thức sorted() nhưng rất khác về cách sử dụng.
  • Phương thức sort() là một phương thức danh sách, tức là nó chỉ có thể được sử dụng để sắp xếp một danh sách (list).
  • Phương thức sort() không trả về gì, có nghĩa là nó thực hiện các thay đổi đối với đối tượng được truyền vào, tức là sequence ban đầu.

Cú pháp phương thức sort()

list_name.sort(key, reverse=[False|True])

Trong đó:

  • key: Tham số này dùng làm cơ sở để so sánh trong khi sắp xếp.
  • reverse: Tham số này là một biến boolean, tức là nếu được đặt thành True, nó sẽ sắp xếp dữ liệu theo thứ tự giảm dần, nếu không nó sẽ sắp xếp theo thứ tự tăng dần. Giá trị mặc định của reverse là False.

Kiểu trả về của sort()

Phương thức sort() thực hiện các thay đổi đối với sequence ban đầu. Do đó, kiểu trả về của nó là None.

Ví dụ về phương thức sort()

Ví dụ 1: Sử dụng sort() với list.

list1 = [3, 4, 5, 1, 2]
print("List ban đầu:", list1)
list1.sort()
print("List sau khi sắp xếp tăng:", list1)
list1.sort(reverse=True)
print("List sau khi sắp xếp giảm:", list1)

Kết quả:

List ban đầu: [3, 4, 5, 1, 2]
List sau khi sắp xếp tăng: [1, 2, 3, 4, 5]
List sau khi sắp xếp giảm: [5, 4, 3, 2, 1]

Ví dụ 2: Sử dụng sort() để sắp xếp list các tuple theo thứ tự giảm dần.

def fsort(val):
    return val[1]

list1 = [(2, 3), (1, 4), (5, 5)]

# Sắp xếp list tăng dần theo phần tử thứ 2 của tuple
list1.sort(key=fsort) #hoặc: list1.sort(key=lambda x:x[1])
print(list1)

Kết quả:

[(2, 3), (1, 4), (5, 5)]

So sánh phương thức sorted() với phương thức sort()

Phương thức sorted() Phương thức sort()
Có thể hoạt động trên cả sequence và collection. Chỉ hoạt động trên list.
Trả về một danh sách đã được sắp xếp. Sắp xếp đối tượng tại chỗ, vì vậy nó trả về None.
Tạo ra một bản sao được sắp xếp của đối tượng Python. Sắp xếp trình tự ban đầu, tức là sắp xếp tại chỗ.
Có 3 tham số là iterable, key, và reverse. Có 2 tham số là key và reverse.
» Tiếp: Date và Time
« Trước: Dictionary
Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực
Copied !!!