2016-06-07 7 views
1

Ich muss das kartesische Produkt der Elemente einiger Listen berechnen. Es scheint, dass der beste Weg, dies zu tun ist, itertools, und insbesondere itertools.product. Nun sind die Listen, die ich verwenden möchte, selbst in einer Liste enthalten, und ich kann nicht einfach die größere Liste für itertools.product verwenden. Ich habe mich gefragt, wie ich die Listen extrahieren sollte, um sie mit Itertools nutzbar zu machen. HierVerwenden Sie Listen innerhalb einer Liste mit itertools.product

ist ein Beispiel, das das Problem zeigt:

import itertools 

elements=[[1, 2], [3, 4]] 
product=itertools.product(elements) 
print product 

Diese Drucke [([1, 2]), ([3, 4])]. Was ich wollte, stattdessen ist etwas, das entspricht der folgenden, aber wo ich muss alle Elemente der „Elemente“ nicht geben einzeln:

product=itertools.product(elements[0], elements[1]) 
print product 

welche druckt [(1, 3), (1, 4), (2, 3), (2, 4)].

Danke.

+4

Verwenden Sie einfach 'itertools.product (* Elemente)' –

+1

http://stackoverflow.com/questions/3480184/unpack-a-list-in-python – ayhan

+0

Ausgezeichnet, danke. Ich habe nicht an das Wort "Auspacken" gedacht – whatamess

Antwort

2

Unpack die Listen in Ihrer Liste mit dem Sternoperator *, um das Produkt auf Ihre Unterlisten anzuwenden.

product=list(itertools.product(*elements))