2017-11-28 5 views
0

두 번째 목록에 해당하는 첫 번째 목록의 각 값을 갖는 목록을 만드는 가장 좋은 방법은 무엇입니까? 처럼 :두 번째 목록의 각 항목을 조인하고 저장하는 목록을 만듭니다 (파이썬)

a=[1,2,3] 
b=[5,6,7] 

만들 C하도록 :

c=[[1,5][1,6][1,7][2,5][2,6][2,7][3,5][3,6][3,7]] 
+0

가능한 중복 사용한다 [ 모든 가능한 순열을 가진 두리스트를 병합하는 Python] (https://stackoverflow.com/questions/32438350/python-merging-two-lists-with-all-possible-permutations) – Arman

답변

3

가장 좋은 방법은 itertools 라이브러리를 사용하는 것입니다.

import itertools 
a=[1,2,3] 
b=[5,6,7] 
c=list(itertools.product(a,b)) 

그러나 튜플 목록을 만듭니다. 특별히 목록의 목록을해야하는 경우 C의

c=[[x, y] for x in a for y in b] 
0
from itertools import product 

a = [1, 2, 3] 
b = [5, 6, 7] 
c = [list(i) for i in product(a, b)] 

값 수행 할 수 있습니다

[[1, 5], [1, 6], [1, 7], [2, 5], [2, 6], [2, 7], [3, 5], [3, 6], [3, 7]] 

itertools.product을 - 워드 프로세서에서 :

서명 서명 : itertools.product (self, /, * args, ** kwargs) 깁스트 : 제품 (* iterables, repeat = 1) -> 제품 오브젝트

입력 iterables의 데카르트 제품. 중첩 된 for-loops와 같습니다.

예를 들어, 제품 (A, B)는 B에서 y에 대해 A의 x에 대해 (x, y)를 반환합니다. 가장 왼쪽 반복자는 가장 바깥 쪽 for 루프에 있으므로 출력 튜플은 주행 거리와 비슷한 방식으로 반복됩니다 (각 반복마다 가장 오른쪽 요소가 변경됨).

반복 가능 제품을 자체적으로 계산하려면 선택적인 반복 키워드 인수를 사용하여 반복 숫자 을 지정하십시오. 예를 들어 제품 (A, 반복 = 4)은 제품 (A, A, A, A)과 같습니다. ('a', 0) ('a', 1) ('a', 2) ('b', 0) ('b', 0) (0120) (0, 1), (0,1)) -> (0,0,0) (0,0,1) (0, 1, 0) , 1,0) (0,1,1) (1,0,0) ...

유형 : 유형은

이 솔루션의 list comprehension