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.