Khóa học python

Sắp xếp List trong Python

0 phút đọc

Python cung cấp hai phương thức chính để sắp xếp list: sort()sorted(). Cả hai phương thức này đều có thể sắp xếp các phần tử của list theo thứ tự tăng dần hoặc giảm dần, và có thể tùy chỉnh thứ tự sắp xếp bằng cách sử dụng tham số key.

Phương thức sort()

Phương thức sort() là một phương thức của đối tượng list, được sử dụng để sắp xếp các phần tử của list tại chỗ (in-place). Điều này có nghĩa là list ban đầu sẽ bị thay đổi và không tạo ra một list mới.

Cú pháp:

list.sort(key=None, reverse=False)

Tham số:

  • key (tuỳ chọn): Một hàm có thể được sử dụng để tùy chỉnh thứ tự sắp xếp.
  • reverse (tuỳ chọn): Một giá trị boolean. Nếu True, list sẽ được sắp xếp theo thứ tự giảm dần. Mặc định là False.

Ví dụ:

fruits = ['apple', 'banana', 'cherry']
fruits.sort()
print(fruits)  # Kết quả: ['apple', 'banana', 'cherry']

Sắp xếp theo thứ tự giảm dần:

fruits = ['apple', 'banana', 'cherry']
fruits.sort(reverse=True)
print(fruits)  # Kết quả: ['cherry', 'banana', 'apple']

Sắp xếp với hàm tùy chỉnh:

def myfunc(n):
    return abs(n - 50)

numbers = [100, 50, 65, 82, 23]
numbers.sort(key=myfunc)
print(numbers)  # Kết quả: [50, 65, 23, 82, 100]

Phương thức sorted()

Phương thức sorted() là một hàm tích hợp sẵn trong Python, được sử dụng để sắp xếp các phần tử của một iterable và trả về một list mới đã được sắp xếp. Hàm này không thay đổi iterable ban đầu.

Cú pháp:

sorted(iterable, key=None, reverse=False)

Tham số:

  • iterable: Một đối tượng có thể lặp lại (list, tuple, dictionary, v.v.).
  • key (tuỳ chọn): Một hàm có thể được sử dụng để tùy chỉnh thứ tự sắp xếp.
  • reverse (tuỳ chọn): Một giá trị boolean. Nếu True, list sẽ được sắp xếp theo thứ tự giảm dần. Mặc định là False.

Ví dụ:

fruits = ['apple', 'banana', 'cherry']
sorted_fruits = sorted(fruits)
print(sorted_fruits)  # Kết quả: ['apple', 'banana', 'cherry']
print(fruits)         # Kết quả: ['apple', 'banana', 'cherry']

Sắp xếp theo thứ tự giảm dần:

fruits = ['apple', 'banana', 'cherry']
sorted_fruits = sorted(fruits, reverse=True)
print(sorted_fruits)  # Kết quả: ['cherry', 'banana', 'apple']

Sắp xếp với hàm tùy chỉnh:

def myfunc(n):
    return abs(n - 50)

numbers = [100, 50, 65, 82, 23]
sorted_numbers = sorted(numbers, key=myfunc)
print(sorted_numbers)  # Kết quả: [50, 65, 23, 82, 100]

Sắp xếp List chứa các kiểu dữ liệu khác nhau

Python cho phép sắp xếp các list chứa các kiểu dữ liệu khác nhau như số nguyên, chuỗi, và thậm chí là các list khác. Tuy nhiên, tất cả các phần tử trong list phải có thể so sánh được với nhau.

Ví dụ:

mixed_list = [3, 'banana', 1, 'apple', 2, 'cherry']
# mixed_list.sort()  # Sẽ gây ra lỗi TypeError

Để sắp xếp một list chứa các kiểu dữ liệu khác nhau, bạn có thể sử dụng tham số key để xác định tiêu chí sắp xếp.

Ví dụ:

mixed_list = [3, 'banana', 1, 'apple', 2, 'cherry']
sorted_mixed_list = sorted(mixed_list, key=str)
print(sorted_mixed_list)  # Kết quả: [1, 2, 3, 'apple', 'banana', 'cherry']

Sắp xếp List lồng nhau

List trong Python có thể chứa các list khác, tạo ra các list lồng nhau. Bạn có thể sử dụng các phương thức sort()sorted() để sắp xếp các list lồng nhau dựa trên các tiêu chí khác nhau.

Ví dụ:

nested_list = [[3, 4], [1, 2], [5, 6]]
nested_list.sort()
print(nested_list)  # Kết quả: [[1, 2], [3, 4], [5, 6]]

Sắp xếp dựa trên phần tử thứ hai của mỗi list con:

nested_list = [[3, 4], [1, 2], [5, 6]]
nested_list.sort(key=lambda x: x[1])
print(nested_list)  # Kết quả: [[1, 2], [3, 4], [5, 6]]

Sắp xếp List chứa từ điển

Bạn có thể sắp xếp một list chứa các từ điển dựa trên giá trị của một khóa cụ thể.

Ví dụ:

students = [
    {'name': 'John', 'age': 25},
    {'name': 'Jane', 'age': 22},
    {'name': 'Dave', 'age': 23}
]

sorted_students = sorted(students, key=lambda x: x['age'])
print(sorted_students)
# Kết quả: [{'name': 'Jane', 'age': 22}, {'name': 'Dave', 'age': 23}, {'name': 'John', 'age': 25}]

Sắp xếp List theo nhiều tiêu chí

Bạn có thể sắp xếp một list theo nhiều tiêu chí bằng cách sử dụng một tuple trong tham số key.

Ví dụ:

students = [
    {'name': 'John', 'age': 25, 'grade': 'B'},
    {'name': 'Jane', 'age': 22, 'grade': 'A'},
    {'name': 'Dave', 'age': 23, 'grade': 'B'}
]

sorted_students = sorted(students, key=lambda x: (x['grade'], x['age']))
print(sorted_students)
# Kết quả: [{'name': 'Jane', 'age': 22, 'grade': 'A'}, {'name': 'Dave', 'age': 23, 'grade': 'B'}, {'name': 'John', 'age': 25, 'grade': 'B'}]

Sắp xếp List với các hàm tích hợp sẵn

Python cung cấp nhiều hàm tích hợp sẵn có thể được sử dụng làm tham số key để sắp xếp list.

Ví dụ:

Sắp xếp theo độ dài của chuỗi:

words = ['apple', 'banana', 'cherry', 'date']
sorted_words = sorted(words, key=len)
print(sorted_words)  # Kết quả: ['date', 'apple', 'banana', 'cherry']

Sắp xếp không phân biệt chữ hoa chữ thường:

words = ['banana', 'Orange', 'Kiwi', 'cherry']
sorted_words = sorted(words, key=str.lower)
print(sorted_words)  # Kết quả: ['banana', 'cherry', 'Kiwi', 'Orange']

Sắp xếp List với các thuật toán sắp xếp nâng cao

Python cung cấp các thuật toán sắp xếp nâng cao như merge sort, quicksort, và radix sort. Các thuật toán này có thể được sử dụng để tối ưu hóa hiệu suất trong các tình huống cụ thể.

Ví dụ:

Sử dụng merge sort:

def merge_sort(arr):
    if len(arr) > 1:
        mid = len(arr) // 2
        L = arr[:mid]
        R = arr[mid:]

        merge_sort(L)
        merge_sort(R)

        i = j = k = 0

        while i < len(L) and j < len(R):
            if L[i] < R[j]:
                arr[k] = L[i]
                i += 1
            else:
                arr[k] = R[j]
                j += 1
            k += 1

        while i < len(L):
            arr[k] = L[i]
            i += 1
            k += 1

        while j < len(R):
            arr[k] = R[j]
            j += 1
            k += 1

arr = [12, 11, 13, 5, 6, 7]
merge_sort(arr)
print(arr)  # Kết quả: [5, 6, 7, 11, 12, 13]

Kết luận

Sắp xếp list là một kỹ thuật quan trọng và thường xuyên được sử dụng trong lập trình Python. Python cung cấp nhiều phương thức và hàm tích hợp sẵn để sắp xếp list một cách hiệu quả và linh hoạt. Bằng cách nắm vững các phương thức sort()sorted(), cũng như các kỹ thuật sắp xếp nâng cao, bạn có thể dễ dàng sắp xếp và quản lý dữ liệu trong các ứng dụng Python của mình.

Avatar
Được viết bởi

TechMely Team

Gợi ý câu hỏi phỏng vấn

entry

Tại sao các thuật toán sắp xếp quan trọng?

entry

Ngăn xếp và hàng đợi khác nhau thế nào?

entry

Triển khai hàng đợi bằng ngăn xếp

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào

Khoá học javascript từ cơ bản đến chuyên sâuYoutube Techmely