2016-08-03 20 views
0

Angenommen, ich habe drei Listenerstellen Liste der Liste in Python

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

Ich möchte eine Liste als

[-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] 
... 

erhalten Wie ein Python-Funktion zu schreiben, dieses Ziel zu erreichen?

+1

Was Sie bisher versucht haben? Kannst du bitte einen [mcve] von deinem neuesten Versuch zeigen? – idjaw

Antwort

2

Sie können itertools.product() verwenden verwenden:

from itertools import product 
from pprint import pprint 

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

Ergebnis:

[(-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

Sie können nur Liste Verständnis

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

Vielen Dank für Ihr Beispiel! Allerdings kann ich auf einen Fall stoßen, der von vier Listen ausgeht. Wie auch immer, Robs Antwort scheint kraftvoll zu sein! – user26143