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

Kiểm tra chuỗi có thể tạo từ nối các phần tử danh sách trong Python


Chúng ta đôi khi cần kiểm tra xem một chuỗi yêu cầu có thể được tạo thành từ nhiều chuỗi có trong danh sách hay không. Thứ tự các chuỗi trong danh sách không quan trọng, miễn là khi nối lại được chuỗi yêu cầu.

Sử dụng permutations

Từ itertools, ta dùng hàm permutations để tạo các hoán vị có thể của các chuỗi trong danh sách theo nhiều thứ tự khác nhau. Sớm nhất khi một tổ hợp khớp với chuỗi yêu cầu, ta kết luận chuỗi có thể được tạo thành.

Ví dụ

from itertools import permutations chk_str = 'balloon' Alist = ['fly','on', 'o', 'hot', 'ball', 'air'] def findstring(strchk, biglist):    for i in range(2, len(biglist) + 1):       for perm in permutations(biglist, i):          if ''.join(perm) == strchk:          return True    return False # Sử dụng hàm if(findstring(chk_str,Alist)):    print("Chuỗi có thể được tạo thành.") else:    print("Chuỗi không thể được tạo thành.")

Kết quả

Chạy mã trên cho kết quả sau −

Chuỗi có thể được tạo thành.

Sử dụng Biểu thức chính quy

Module re cung cấp hàm compile để tạo các chuỗi có thể bằng cách chỉ định mẫu biểu thức chính quy. Sau đó so sánh với chuỗi cần kiểm tra. Nếu kết quả không phải None, ta kết luận chuỗi có thể được tạo thành.

Ví dụ

import re chk_str = 'balloon' Alist = ['fly','on', 'o', 'hot', 'ball', 'air'] def findstring(strchk, biglist):    r = re.compile("(?:" + "|".join(biglist) + ")*$")    if r.match(strchk) != None:       return True    return False # Sử dụng hàm if(findstring(chk_str,Alist)):    print("Chuỗi có thể được tạo thành.") else:    print("Chuỗi không thể được tạo thành.")

Kết quả

Chạy mã trên cho kết quả sau −

Chuỗi có thể được tạo thành.