Trích xuất các phần tử trong danh sách là số nguyên có tất cả chữ số giống nhau (mono-digit: 1, 22, 333, 4444...). Sử dụng list comprehension và all().
Mã nguồn
my_list = [863, 1, 463, "pyt", 782, 241, "is", 639, 4, "fun"]
print("Danh sách:", my_list)
# Chuyển sang string, kiểm tra tất cả ký tự bằng ký tự đầu
my_result = [index for index in my_list if all(str(element) == str(index)[0] for element in str(index))]
print("Phần tử mono-digit:", my_result)
Kết quả
Danh sách: [863, 1, 463, 'pyt', 782, 241, 'is', 639, 4, 'fun'] Phần tử mono-digit: [1, 4]
Giải thích
- Duyệt
indextrongmy_list(ghi đè tên biến, dễ nhầm lẫn). str(index)chuyển phần tử thành chuỗi.for element in str(index)lặp qua các ký tự của chuỗi đó.str(element) == str(index)[0]so sánh mỗi ký tự với ký tự đầu tiên.all(...)True nếu tất cả ký tự giống nhau.- 1 → "1" (1 ký tự) → True. 4 → "4" → True. 863 → "8","6","3" → False.
- Chuỗi "pyt" cũng được kiểm tra: 'p','y','t' khác nhau → False.
Sửa tên biến tránh nhầm lẫn
my_result = [x for x in my_list if all(c == str(x)[0] for c in str(x))]
Chỉ hoạt động cho số nguyên dương. Số âm: str(-11) = "-11", ký tự đầu '-' ≠ '1'.