Đôi khi chúng ta cần kiểm tra xem một chuỗi bắt buộc có thể được hình thành từ nhiều chuỗi có trong danh sách hay không. Cũng không quan trọng thứ tự các chuỗi hiện diện trong danh sách phải được nối với nhau để có được chuỗi bắt buộc.
Với hoán vị
Từ itertools, chúng ta có thể sử dụng hàm hoán vị sẽ cung cấp cho chúng ta các kết hợp có thể có của các chuỗi trong danh sách theo thứ tự khác nhau. Ngay sau khi một tổ hợp nhất định khớp với chuỗi bắt buộc, chúng tôi kết luận rằng 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 # Using the function if(findstring(chk_str,Alist)): print("String can be formed.") else: print("String can not be formed.")
Đầu ra
Chạy đoạn mã trên cho chúng ta kết quả sau -
String can be formed.
Với Cụm từ Thông dụng
Mô-đun re cung cấp chức năng biên dịch sẽ tạo các chuỗi có thể bằng cách chỉ định mẫu biểu thức chính quy. Sau đó, nó sẽ được so sánh với chuỗi cần kiểm tra. Nếu kết quả không phải là không thì chúng ta có thể kết luận rằng chuỗi có thể được hình 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 # Using the function if(findstring(chk_str,Alist)): print("String can be formed.") else: print("String can not be formed.")
Đầu ra
Chạy đoạn mã trên cho chúng ta kết quả sau -
String can be formed.