Sử dụng list comprehension để lọc bỏ các số mà khi đảo ngược chữ số (chuyển sang string, đảo, chuyển lại int) thì vẫn tồn tại trong danh sách gốc. Lưu ý: logic này loại bỏ số nếu số đảo ngược của nó CÓ trong danh sách, không nhất thiết là chính nó palindrome (ví dụ 12 và 21).
Ví dụ
Minh họa:
my_list = [56, 78, 12, 32, 4, 8, 9, 100, 11]
print("Danh sách:", my_list)
my_result = [elem for elem in my_list if int(str(elem)[::-1]) not in my_list]
print("Kết quả:", my_result)
Kết quả
Danh sách: [56, 78, 12, 32, 4, 8, 9, 100, 11] Kết quả: [56, 78, 12, 32, 100]
Giải thích
- Duyệt từng phần tử
elem. - Chuyển sang string, đảo ngược
[::-1], chuyển lại int. - Kiểm tra giá trị đảo ngược có trong danh sách gốc không.
- Nếu KHÔNG có -> giữ lại.
- Kết quả: 4,8,9,11 bị loại vì đảo ngược của chúng (4,8,9,11) có trong list; 100 đảo ngược là 1 (không có trong list) -> giữ.