2016-07-06 11 views
-1

Make ich weiß nicht, ob es nennt Kombination oder Permutation, so kann die Frage in Frage zu Ihrem Kommentar bearbeitet werden.wie eine Kombination von Listen aus einer Liste in Python

Ich habe eine Liste wie folgt:

[ 
    ["a"], 
    ["b", "c"], 
    ["d", "e", "f"] 
] 

ich dies als ausgegeben werden soll:

[ 
    "abd", 
    "acd", 
    "abe", 
    "ace", 
    "abf", 
    "acf" 
] 

Meine erste Priorität ist es, dies mit integrierten Tools oder von Hand, nicht mit anderen wissenschaftlichen Modulen. Wenn es jedoch keine Möglichkeit gibt, könnten wissenschaftliche Module verwendet werden.


Umwelt

  • Python 3.5.1
+4

Haben Sie versucht, [ 'itertools.product'] (https://docs.python.org/3.5/library/itertools.html#itertools.product)? – MisterMiyagi

+0

Danke für die Erwähnung. –

Antwort

1

Wie die Kommentare vorgeschlagen, könnten Sie itertools.product verwenden. Oder Sie könnten eine einfache rekursive Methode implementieren:

def combine(lists, index=0, combination=""): 
    if index == len(lists): 
     print combination 
     return 
    for i in lists[index]: 
     combine(lists, index+1, combination + i) 

lists = [ 
    ["a"], 
    ["b", "c"], 
    ["d", "e", "f"] 
] 

combine(lists) 
+0

Sie könnten dies tun, aber warum das Rad neu erfinden? Dies ist ein klassisches 'itertools.product' Problem. –