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:

python Copy
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ụ:

python Copy
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:

python Copy
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:

python Copy
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:

python Copy
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ụ:

python Copy
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:

python Copy
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:

python Copy
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ụ:

python Copy
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ụ:

python Copy
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ụ:

python Copy
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:

python Copy
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ụ:

python Copy
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ụ:

python Copy
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:

python Copy
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:

python Copy
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:

python Copy
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

Admin Team

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

Không có dữ liệu

Không có dữ liệu

Gợi ý bài viết
Không có dữ liệu

Không có dữ liệu

Bình luận

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

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