Sunday, January 19, 2025

[Python] Lesson 52 – Sort

-

sort trong Python là một hàm được sử dụng để sắp xếp các phần tử của một list theo thứ tự tăng dần hoặc giảm dần. Hàm sort có thể được áp dụng trên các list chứa các kiểu dữ liệu nguyên thủy như int, float và cả kiểu dữ liệu phức tạp như string, tuple, list, v.v.

Cú pháp sử dụng hàm sort như sau:

list.sort(reverse=False, key=None)
  • reverse: có giá trị True hoặc False để quyết định sắp xếp theo thứ tự tăng dần (reverse=False) hoặc giảm dần (reverse=True).
  • key: đây là một hàm mà sẽ được sử dụng để đưa ra quyết định sắp xếp. Nếu tham số này không được cung cấp, các phần tử sẽ được sắp xếp theo thứ tự mặc định.

Ví dụ 1:

# Sắp xếp list các số nguyên theo thứ tự tăng dần
numbers = [3, 1, 4, 2, 5]
numbers.sort()
print(numbers)  # output: [1, 2, 3, 4, 5]

# Sắp xếp list các số nguyên theo thứ tự giảm dần
numbers = [3, 1, 4, 2, 5]
numbers.sort(reverse=True)
print(numbers)  # output: [5, 4, 3, 2, 1]

# Sắp xếp list các chuỗi theo thứ tự tăng dần
words = ['apple', 'banana', 'cherry', 'durian']
words.sort()
print(words)  # output: ['apple', 'banana', 'cherry', 'durian']

# Sắp xếp list các tuple theo thứ tự tăng dần của phần tử thứ hai của mỗi tuple
data = [(3, 'apple'), (1, 'banana'), (4, 'cherry'), (2, 'durian')]
data.sort(key=lambda x: x[1])
print(data)  # output: [(3, 'apple'), (2, 'durian'), (1, 'banana'), (4, 'cherry')]

Trong đoạn code trên, ta sử dụng phương thức sort() của list để sắp xếp các phần tử của list theo một thứ tự nào đó. Cụ thể, ta có các ví dụ sau:

  • Sắp xếp list numbers theo thứ tự tăng dần: ta gọi phương thức sort() trực tiếp trên list numbers mà không truyền tham số gì cả, vì thứ tự tăng dần là thứ tự mặc định của sort().
  • Sắp xếp list numbers theo thứ tự giảm dần: ta gọi phương thức sort() trên list numbers và truyền tham số reverse=True.
  • Sắp xếp list words theo thứ tự tăng dần: ta gọi phương thức sort() trên list words mà không truyền tham số gì cả, vì Python mặc định sắp xếp các chuỗi theo thứ tự từ điển (alphabetical order).
  • Sắp xếp list data theo thứ tự tăng dần của phần tử thứ hai của mỗi tuple: ta gọi phương thức sort() trên list data và truyền tham số key=lambda x: x[1]. Tham số key được sử dụng để chỉ định một hàm hoặc lambda expression để trích xuất giá trị để so sánh của mỗi phần tử trong list. Ở đây, ta sử dụng lambda expression lambda x: x[1] để trích xuất phần tử thứ hai của mỗi tuple trong list data.

Ví dụ 2:

Sắp xếp danh sách các sinh viên theo điểm số trong Python:

students = [
    {"name": "John", "score": 90},
    {"name": "Jane", "score": 85},
    {"name": "Mike", "score": 95},
    {"name": "Sarah", "score": 80}
]

# Sắp xếp danh sách sinh viên theo điểm số giảm dần
sorted_students = sorted(students, key=lambda x: x["score"], reverse=True)

# In ra danh sách sinh viên đã được sắp xếp
for student in sorted_students:
    print(student["name"], student["score"])

Kết quả:

Mike 95
John 90
Jane 85
Sarah 80

Trong ví dụ này, chúng ta sử dụng hàm sorted để sắp xếp danh sách sinh viên theo điểm số. Tham số key được sử dụng để chỉ định một hàm lambda để lấy giá trị điểm số từ mỗi sinh viên để sắp xếp. Tham số reverse được sử dụng để chỉ định thứ tự sắp xếp là giảm dần. Kết quả được lưu vào biến sorted_students và được in ra màn hình bằng cách duyệt qua danh sách và in ra thông tin của từng sinh viên.

Ví dụ 3:

Có thể sử dụng module subprocess trong Python để thực hiện các lệnh của hệ thống Linux. Ví dụ, ta có thể sử dụng lệnh ls trong Linux để liệt kê tất cả các file trong một thư mục và sắp xếp kết quả theo thứ tự tăng dần hoặc giảm dần bằng cách sử dụng hàm sort của Python.

Ví dụ, sau đây là một đoạn mã Python sử dụng lệnh ls và sắp xếp kết quả theo thứ tự tăng dần:

import subprocess

# Thực hiện lệnh "ls" để liệt kê tất cả các file trong thư mục hiện tại
result = subprocess.run(['ls'], capture_output=True, text=True)

# Tách các tên file thành một list và sắp xếp theo thứ tự tăng dần
files = result.stdout.strip().split('\n')
files.sort()

# In ra các file đã được sắp xếp theo thứ tự tăng dần
print(files)

Ví dụ sau đây sử dụng lệnh ls để liệt kê các file trong một thư mục cụ thể, sau đó sắp xếp theo thứ tự giảm dần sử dụng hàm sort của Python:

import subprocess

# Thực hiện lệnh "ls" để liệt kê tất cả các file trong thư mục /etc
result = subprocess.run(['ls', '/etc'], capture_output=True, text=True)

# Tách các tên file thành một list và sắp xếp theo thứ tự giảm dần
files = result.stdout.strip().split('\n')
files.sort(reverse=True)

# In ra các file đã được sắp xếp theo thứ tự giảm dần
print(files)

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories