2014-02-16 6 views
0

목록 목록이 있으며 각 목록에서 하나의 요소로 구성된 목록을 생성하려고합니다. 예를 들어Python - 목록 목록 이해하기 목록

는 목록 [[1, 2], [3, 4], [5, 6], [7, 8] 주어진, 다음 코드 [(i, j, k, h) for i in [1, 2] for j in [3, 4] for k in [5, 6] for h in [7, 8]]를 실행할 것이다 및 출력

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

이 코드는 하위 목록의 다른 번호 목록의 목록에 적응하지 않는 가져옵니다. 원하는 결과를 얻기 위해 중첩 된 목록 내포를 사용하는 방법이 있습니까? 내 하위 목록의 길이가 항상 같지는 않습니다.

+0

@devnull 확실히 중복을 - 당신이 날 닫으 도울 수? –

+1

@VincentTjeng 걱정하지 마라, 그것은 처리 될 것이다 :) – poke

답변

5

사용 itertools.product, 그리고 인수로 통과 할 때 목록을 풀고 :

In [40]: from itertools import product 

In [41]: list(product(*[[1, 2], [3, 4], [5, 6], [7, 8]])) 
Out[41]: 
[(1, 3, 5, 7), 
(1, 3, 5, 8), 
(1, 3, 6, 7), 
(1, 3, 6, 8), 
(1, 4, 5, 7), 
(1, 4, 5, 8), 
(1, 4, 6, 7), 
(1, 4, 6, 8), 
(2, 3, 5, 7), 
(2, 3, 5, 8), 
(2, 3, 6, 7), 
(2, 3, 6, 8), 
(2, 4, 5, 7), 
(2, 4, 5, 8), 
(2, 4, 6, 7), 
(2, 4, 6, 8)]