문제
길이 1..n의 가능한 모든 하위 집합을 찾으려는 문자열이 있습니다.
예
"abc"및라는 문자열이 주어지면 n=3
다음 목록을 생성하고 싶습니다.
{"a", "b", "c", "aa", "ab", "ac", "ba", ..., "aaa", "aab", "aac", "aba" ..., "ccc"}
내 시도
... 고통스러운 초보자입니다. 모든 n
중첩 n
시간에 대해 하나의 루프 .
n = 3이면 다음과 같습니다.
characters = "abcdef" # and so on
for char in characters:
print(char)
for char1 in characters:
for char2 in characters:
print(str(char1) + str(char2))
for char1 in characters:
for char2 in characters:
for char3 in characters:
print(str(char1) + str(char2) + str(char3))
보시다시피, 이것은 최소한으로 말할 수 없습니다. 이 작업을 수행하는 좋은 방법이 있습니까? 상상하기 힘들지만 복잡성 감소도 멋질 것입니다.
itertools.product
당신이 필요합니다. "".join"
문자를 단일 문자열로 결합하는 데 사용 합니다.
>>> import itertools
>>> n = 3
>>> s = "abc"
>>> for i in range(n):
print(["".join(prod) for prod in itertools.product(s, repeat = i + 1)])
['a', 'b', 'c']
['aa', 'ab', 'ac', 'ba', 'bb', 'bc', 'ca', 'cb', 'cc']
['aaa', 'aab', 'aac', 'aba', 'abb', 'abc', 'aca', 'acb', 'acc', 'baa', 'bab', 'bac', 'bba', 'bbb', 'bbc', 'bca', 'bcb', 'bcc', 'caa', 'cab', 'cac', 'cba', 'cbb', 'cbc', 'cca', 'ccb', 'ccc']
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다