2016-08-03 4 views
0

Предположим, у меня есть три спискаСоздать список списка в Python

[-1,0,1,2] 
[0,1] 
[a,b,c] 

Я хотел бы получить список как

[-1,0,a] 
[-1,0,b] 
[-1,0,c] 

[-1,1,a] 
[-1,1,b] 
[-1,1,c] 

[0,0,a] 
[0,0,b] 
[0,0,c] 
... 

Как написать функцию питона для достижения этой цели?

+1

Что вы пробовали до сих пор? Можете ли вы показать [mcve] своей последней попытки, пожалуйста? – idjaw

ответ

2

Вы можете использовать itertools.product():

from itertools import product 
from pprint import pprint 

l = [[-1, 0, 1, 2], [0, 1], ['a', 'b', 'c']] 
result = list(product(*l)) 
pprint(result) 

Результат:

[(-1, 0, 'a'), 
(-1, 0, 'b'), 
(-1, 0, 'c'), 
(-1, 1, 'a'), 
(-1, 1, 'b'), 
(-1, 1, 'c'), 
(0, 0, 'a'), 
(0, 0, 'b'), 
(0, 0, 'c'), 
(0, 1, 'a'), 
(0, 1, 'b'), 
(0, 1, 'c'), 
(1, 0, 'a'), 
(1, 0, 'b'), 
(1, 0, 'c'), 
(1, 1, 'a'), 
(1, 1, 'b'), 
(1, 1, 'c'), 
(2, 0, 'a'), 
(2, 0, 'b'), 
(2, 0, 'c'), 
(2, 1, 'a'), 
(2, 1, 'b'), 
(2, 1, 'c')] 
1

Вы можете просто использовать список понимание

l1 = [-1,0,1,2] 
l2 = [0,1] 
l3 = ['a','b','c'] 
[[i,j,k] for i in l1 for j in l2 for k in l3] 
+0

Спасибо за ваш пример! Однако я могу столкнуться с случаем, который начинается с четырех списков. В любом случае ответ Роба кажется мощным! – user26143

Смежные вопросы