Lọc các tuple trong danh sách mà mọi ký tự của mọi chuỗi trong tuple đều thuộc tập ký tự cho phép. Sử dụng list comprehension và hàm all() lồng.
Mã nguồn
my_list = [('pyt', 'best'), ('pyt', 'good'), ('fest', 'pyt')]
print("Danh sách tuple:", my_list)
char_string = 'pyestb' # Tập ký tự cho phép
print("Ký tự cho phép:", char_string)
# Kiểm tra: mọi phần tử trong tuple, mọi ký tự con đều trong char_string
my_result = [index for index in my_list if all(all(sub in char_string for sub in element) for element in index)]
print("Kết quả lọc:", my_result)
Kết quả
Danh sách tuple: [('pyt', 'best'), ('pyt', 'good'), ('fest', 'pyt')]
Ký tự cho phép: pyestb
Kết quả lọc: [('pyt', 'best')]
Giải thích
all(sub in char_string for sub in element): kiểm tra tất cả ký tự của chuỗielementcó trongchar_string.all(... for element in index): kiểm tra điều kiện trên cho mọi chuỗielementtrong tupleindex.- Tuple ('pyt', 'best'): 'p','y','t' ∈ char_string; 'b','e','s','t' ∈ char_string → giữ.
- Tuple ('pyt', 'good'): 'g','o','o','d' → 'g','o','d' không trong char_string → loại.
- Tuple ('fest', 'pyt'): 'f' không trong char_string → loại.
Logic phức tạp; có thể viết hàm helper để dễ đọc hơn.