Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python에서 목록의 문자열 요소를 연결하여 주어진 문자열을 구성할 수 있는지 확인

<시간/>

목록에 있는 많은 수의 문자열에서 필요한 문자열을 구성할 수 있는지 확인해야 하는 경우가 있습니다. 또한 필요한 문자열을 얻기 위해 조인되어야 하는 문자열이 목록에 있는 순서는 중요하지 않습니다.

순열 사용

itertools에서 다양한 순서로 목록에 있는 문자열의 가능한 조합을 제공하는 순열 함수를 사용할 수 있습니다. 주어진 조합이 필요한 문자열과 일치하는 즉시 문자열이 형성될 수 있다는 결론을 내립니다.

예시

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.")

출력

위의 코드를 실행하면 다음과 같은 결과가 나옵니다. -

String can be formed.

정규 표현식 사용

re 모듈은 정규식 패턴을 지정하여 가능한 문자열을 생성하는 컴파일 기능을 제공합니다. 그런 다음 검사할 문자열과 비교됩니다. 결과가 none이 아니면 문자열이 형성될 수 있다는 결론을 내릴 수 있습니다.

예시

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.")

출력

위의 코드를 실행하면 다음과 같은 결과가 나옵니다. -

String can be formed.