목록 조합의 포괄적 생성: 수치적으로 효율적인 접근 방식
15개 숫자 목록을 고려하면 목표는 32,768개 조합을 모두 얻는 것입니다. 길이에 관계없이. 제안된 접근 방식 중 하나는 십진 정수(1-32768)를 반복하고 이진 표현을 활용하여 요소를 선택하는 것입니다. 이 방법이 실행 가능해 보이지만 더 효율적인 솔루션이 존재합니다.
itertools 모듈 활용
Python itertools 모듈은 조합 생성에 대한 포괄적인 접근 방식을 제공합니다. 그 기능 중 하나인 조합을 사용하면 특정 길이의 조합을 생성할 수 있습니다. 그러나 이 경우의 목표는 임의 길이의 조합을 생성하는 것입니다.
이 문제를 해결하려면 범위 함수를 사용하여 가능한 모든 길이 "L"을 반복할 수 있습니다.
import itertools stuff = [1, 2, 3] for L in range(len(stuff) + 1): for subset in itertools.combinations(stuff, L): print(subset)
이것은 방법은 길이에 관계없이 주어진 목록의 모든 조합을 생성하도록 보장합니다.
복잡성과 우아함
더 유연하고 잠재적으로 시각적으로 매력적인 접근 방식을 위해 생성기 체인을 활용하여 가능한 모든 길이를 포괄하는 일련의 조합() 생성기를 생성할 수 있습니다.
from itertools import chain, combinations def all_subsets(ss): return chain(*map(lambda x: combinations(ss, x), range(0, len(ss)+1))) for subset in all_subsets(stuff): print(subset)
이 방법을 사용하면 주어진 목록의 가능한 모든 조합이 쉽게 생성되어 강력한 솔루션을 제공합니다.
위 내용은 Python에서 목록의 가능한 모든 하위 집합을 어떻게 효율적으로 생성할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!