HOWTO · Python

Python의 목록 조합

이 튜토리얼은 파이썬에서 목록 요소의 조합을 찾는 방법을 보여줍니다.

이 페이지의 내용

조합은 요소 모음에서 가능한 배열 수를 결정하는 기술입니다. 요소의 조합에서 요소는 임의의 순서로 선택됩니다.

이 자습서에서는 Python에서 목록 요소의 전체 조합을 찾습니다.

itertools.combinations()함수를 사용하여 Python에서 목록 조합 찾기

itertools모듈의combinations(list_name, x)함수는 목록 이름과 숫자 ‘x’를 매개 변수로 취하고 한 요소의 가능한 모든 조합을 포함하는 길이 ‘x’의 튜플 목록을 반환합니다. 다른 요소와 함께 목록.

예를 들면

from itertools import combinations

A = [10, 5, "Hi"]
temp = combinations(A, 2)
for i in list(temp):
    print(i)

출력:

(10, 5)
(10, 'Hi')
(5, 'Hi')

정렬 된 목록은 정렬 된 순서로 조합 튜플을 출력합니다. combinations()함수를 사용하여 목록의 한 요소를 자신과 결합 할 수 없습니다.

itertools.combinations_with_replacement()함수를 사용하여 Python에서 목록 조합 찾기

itertools모듈의 함수combinations_with_replacement(list_name, x)는 목록 이름과 숫자 ‘x’를 매개 변수로 취하고 목록 요소의 가능한 모든 조합을 포함하는 길이 ‘x’의 튜플 목록을 반환합니다. 이 기능을 사용하면 목록의 한 요소를 자신과 결합 할 수 있습니다.

예를 들면

from itertools import combinations_with_replacement

A = [1, 5, "Hi"]
temp = combinations_with_replacement(A, 2)
for i in list(temp):
    print(i)

출력:

(1, 1)
(1, 5)
(1, 'Hi')
(5, 5)
(5, 'Hi')
('Hi', 'Hi')

사용자 정의powerset()함수를 생성하여 Python에서 목록 조합 찾기

수학에서 모든 집합의 거듭 제곱 집합은 빈 집합과 함께 주어진 집합의 가능한 모든 하위 집합을 포함하는 집합입니다. 집합S = {2, 5, 10}의 거듭 제곱 집합은{{}, {2}, {5}, {10}, {2, 5}, {2, 10}, {5, 10}, {2, 5, 10}}입니다. 다음 함수powerset()는 목록의 모든 길이 ‘r’을 반복하고 목록 요소의 가능한 모든 조합을 인쇄하는 데 사용됩니다.

예를 들면

from itertools import chain, combinations


def powerset(list_name):
    s = list(list_name)
    return chain.from_iterable(combinations(s, r) for r in range(len(s) + 1))


A = [60, 7, "Hi"]
for x in powerset(A):
    print(x)

출력:

()
(1,)
(5,)
('Hi',)
(1, 5)
(1, 'Hi')
(5, 'Hi')
(1, 5, 'Hi')