Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Python – Sắp xếp danh sách theo chữ số hàng đơn vị (Units Digit)

Sắp xếp danh sách số nguyên dựa trên chữ số hàng đơn vị (chữ số cuối cùng). Sử dụng hàm key chuyển số thành chuỗi và lấy ký tự cuối [-1].

Mã nguồn


def unit_sort(element):
    return str(element)[-1]  # Chữ số cuối

my_list = [716, 134, 343, 24742]
print("Danh sách gốc:", my_list)

my_list.sort(key=unit_sort)
print("Danh sách sau sắp xếp:", my_list)

Kết quả

Danh sách gốc: [716, 134, 343, 24742]
Danh sách sau sắp xếp: [24742, 343, 134, 716]

Giải thích

  • Chữ số đơn vị: 716→6, 134→4, 343→3, 24742→2.
  • Sắp xếp theo ký tự: '2', '3', '4', '6' (thứ tự ASCII/Unicode).
  • Kết quả: 24742(2), 343(3), 134(4), 716(6).
  • Stable sort: nếu cùng chữ số đơn vị, giữ thứ tự gốc.

Cách khác (toán học)


my_list.sort(key=lambda x: x % 10)

Dùng modulo 10 nhanh hơn và đúng về mặt số học (tránh vấn đề số âm: -123 % 10 = 7 trong Python).

Với số âm, str(-123)[-1] = '3' nhưng -123 % 10 = 7. Cần xử lý: abs(x) % 10.