> 백엔드 개발 > 파이썬 튜토리얼 > Python에서 목록의 가능한 모든 하위 집합을 어떻게 효율적으로 생성할 수 있습니까?

Python에서 목록의 가능한 모든 하위 집합을 어떻게 효율적으로 생성할 수 있습니까?

Barbara Streisand
풀어 주다: 2024-12-25 11:08:23
원래의
1008명이 탐색했습니다.

How Can We Efficiently Generate All Possible Subsets of a List in Python?

목록 조합의 포괄적 생성: 수치적으로 효율적인 접근 방식

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

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