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

Python – Lọc tuple chứa chuỗi chỉ gồm ký tự cho phép

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ỗi element có trong char_string.
  • all(... for element in index): kiểm tra điều kiện trên cho mọi chuỗi element trong tuple index.
  • 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.