Powerset 세대: 우아한 접근 방식
질문:
주어진 세트에서 어떻게 효율적으로 계산할 수 있습니까? 원본의 가능한 모든 하위 집합을 포함하는 거듭제곱 집합 설정하시겠습니까?
답변:
Python의 다용도 itertools 모듈은 아래에 설명된 것처럼 파워셋 생성을 위한 놀라운 솔루션을 제공합니다.
from itertools import chain, combinations def powerset(iterable): s = list(iterable) return chain.from_iterable(combinations(s, r) for r in range(len(s)+1))
설명:
출력:
이 powerset 함수를 "abcd" 요소가 포함된 iterable에 적용하면 다음이 생성됩니다. powerset:
[(), ('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')]
사용자 정의:
출력의 초기 빈 튜플이 바람직하지 않은 경우 1에서 반복 가능한 길이까지의 범위를 사용하도록 범위 문을 변경하기만 하면 됩니다. 1을 더하면 파워셋에서 빈 조합을 효과적으로 제외할 수 있습니다.
위 내용은 주어진 집합의 거듭제곱 집합을 어떻게 효율적으로 생성할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!