문자열 목록의 모든 가능한 조합에 중복을 피하고자합니다 (예 : 1122
은 내 문맥에 2211
과 동일하므로 하나 또는 다른 문자 만 사용해야 함). 결과 목록).중복을 피하고 문자열 조합에 필터를 적용하는 방법
또한 조합 중에 필터를 적용하고 싶습니다. 예를 들어 결과에 3
이 포함 된 문자열을 포함하고 싶지 않습니다.
이 논리는 어떻게 처리해야합니까?
import itertools
def main():
newkeywords = []
keywords = ["".join(i) for i in itertools.product(["11", "22", "33"], repeat = 2)]
for item in keywords:
newitem = "".join(sorted(item))
if "3" not in newitem and newitem not in newkeywords:
newkeywords.append(newitem)
print(newkeywords)
main()
결과 :
이 코드는이 당신이 원하는 것을해야
>>> keywords = [''.join(i) for i in itertools.product(['11', '22', '33'], repeat = 2)]
>>> keywords
['1111', '1122', '1133', '2211', '2222', '2233', '3311', '3322', '3333']
'2222'및 '3333'도 건너 뛸 수 있습니까? – RomanPerekhrest
정렬 된 문자열이 새 목록에없는 경우 원래 문자열을 추가하고 각 문자열을 반복하고 정렬 할 수 있습니다. https://stackoverflow.com/questions/15046242/how-to-sort-the-letters-in-a-string- alphabetically-in-python 당신이 가고 싶은 올바른 방향 인 것처럼 보이는다면 나는 더 나은 대답을 쓸 수 있습니다. – sniperd
3을 포함하는 모든 문자열을 삭제해야합니다. – Michael