> 백엔드 개발 > 파이썬 튜토리얼 > Python에서 주어진 세트의 모든 하위 세트(Powerset)를 효율적으로 생성하려면 어떻게 해야 합니까?

Python에서 주어진 세트의 모든 하위 세트(Powerset)를 효율적으로 생성하려면 어떻게 해야 합니까?

Linda Hamilton
풀어 주다: 2024-12-04 02:15:11
원래의
618명이 탐색했습니다.

How Can I Efficiently Generate All Subsets (Powerset) of a Given Set in Python?

집합의 모든 하위 집합 찾기: 거듭제곱

주어진 요소 집합에서 모든 하위 집합을 찾는 것은 일반적인 프로그래밍 작업일 수 있습니다. . 이는 집합의 거듭제곱 집합을 구성하는 것으로 알려져 있습니다.

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿