집합의 모든 하위 집합 찾기: 거듭제곱
주어진 요소 집합에서 모든 하위 집합을 찾는 것은 일반적인 프로그래밍 작업일 수 있습니다. . 이는 집합의 거듭제곱 집합을 구성하는 것으로 알려져 있습니다.
itertools를 사용한 솔루션
Python itertools 모듈은 조합을 사용하여 거듭제곱 집합을 계산하기 위한 우아한 솔루션을 제공합니다.
from itertools import chain, combinations def powerset(iterable): "powerset([1,2,3]) --> () (1,) (2,) (3,) (1,2) (1,3) (2,3) (1,2,3)" s = list(iterable) return chain.from_iterable(combinations(s, r) for r in range(len(s)+1))
어떻게요? 작동
이 기능은 빈 세트에서 전체 세트까지 세트에 있는 요소의 모든 조합을 생성합니다. 가능한 하위 집합 크기 범위(0부터 집합의 요소 수)를 반복하고 각 크기에 대한 요소 조합을 생성하여 이를 달성합니다.
예
예를 들어 집합 {0, 1, 2, 3}의 거듭제곱 집합 is:
list(powerset("abcd")) [(), ('a',), ('b',), ('c',), ('d',), ('a', 'b'), ('a', 'c'), ('a', 'd'), ('b', 'c'), ('b', 'd'), ('c', 'd'), ('a', 'b', 'c'), ('a', 'b', 'd'), ('a', 'c', 'd'), ('b', 'c', 'd'), ('a', 'b', 'c', 'd')]
사용자 정의
powerset에서 빈 하위 집합을 제외하려면 powerset 함수의 범위 문을 range(1 , 길이 1):
def powerset(iterable): s = list(iterable) return chain.from_iterable(combinations(s, r) for r in range(1, len(s)+1))
위 내용은 Python에서 주어진 세트의 모든 하위 세트(Powerset)를 효율적으로 생성하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!