>  기사  >  백엔드 개발  >  Python에서 두 목록의 전체 조합 방법은 무엇입니까?

Python에서 두 목록의 전체 조합 방법은 무엇입니까?

王林
王林앞으로
2023-05-05 20:34:121080검색

풀 패키지란 무엇인가요?

두 개의 튜플 (a, b) (c, d), 그 조합은 a,c a,db,c b,d입니다.

방법 1

itertools 클래스를 통해 목록 목록을 생성합니다. 여기에는 두 개의 모든 잠재적 조합이 포함됩니다. 목록

import itertools

list1 = [1, 2, 3, 4]
list2 = [5, 6, 7, 8,9]
print(list(itertools.product(list1, list2)))

출력 결과:

[(1, 5), (1, 6), (1, 7), (1, 8), (1, 9), (2, 5), (2, 6), (2, 7), (2, 8), (2, 9), (3, 5), (3, 6), (3, 7), (3, 8), (3, 9), (4, 5), (4, 6), (4, 7), (4, 8), (4, 9)]

방법 2

목록 작성기를 사용하여 중첩된 목록을 만들어 보세요.

>>> [[[x,y] for x in list1] for y in list2]
[[[1, 3], [2, 3]], [[1, 4], [2, 4]]]

또는 한 줄 목록을 원할 경우 대괄호를 제거하세요.

>>> [[x,y] for x in list1 for y in list2]
[[1, 3], [1, 4], [2, 3], [2, 4]]

방법 3

첫 번째 목록을 반복하고 두 번째 목록을 순열하여 함께 압축합니다.

>>> from itertools import permutations, repeat
>>> a = [1, 2, 3]
>>> b = [4, 5, 6]
>>> list(list(zip(r, p)) for (r, p) in zip(repeat(a), permutations(b)))
[[(1, 4), (2, 5), (3, 6)],
 [(1, 4), (2, 6), (3, 5)],
 [(1, 5), (2, 4), (3, 6)],
 [(1, 5), (2, 6), (3, 4)],
 [(1, 6), (2, 4), (3, 5)],
 [(1, 6), (2, 5), (3, 4)]]

EDIT: Peter Otten이 지적했듯이 내부 zip과 반복은 중복됩니다.

아아아아

위 내용은 Python에서 두 목록의 전체 조합 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제