Python-erstellen einer Liste mit itertools.Produkt?

Ich bin momentan dabei, eine Liste mit itertools aus einer Liste von Bereichen, so weit habe ich dieses:

start_list = [xrange(0,201,1),xrange(0,201,2),xrange(0,201,5),xrange(0,201,10),xrange(0,201,20),xrange(0,201,50),xrange(0,201,100),xrange(0,201,200)]

Nun, ich weiß, dass wenn ich versuchen zu laufen, die nächste Zeile wird es töten mein python-interpreter:

next_list = list(itertools.product(*start_list))

Was ich Frage ist wäre es möglich, ein argument, das prüft jedes Tupel, für die die Summe seiner Elemente und bringt Sie in next_list, wenn gleich eine bestimmte Menge?

Vielleicht so etwas wie:

next_list = list(itertools.product(*start_list,sum(tuples)=200))

Ich weiß, das ist nicht richtig und ich muss anfangen neu zu denken, wie werde ich über diese. Wird start_list die Bereiche in den generator zu viele, um durch den Bau eines weiteren Liste?

  • Wenn Sie versuchen, um herauszufinden, wie die partition der integer-200 in 8 Bedingungen, gezeichnet von unterschiedlichen sets, gibt es einfachere Wege, um zu berechnen, next_list. Wenn ich zähle rechts Ihr Kartesisches Produkt hat 5768123130 unterschiedliche Elemente zu iterieren über, die wird eine Weile dauern.
  • Hallo DSM, vielen Dank für die Beantwortung. Ich werde auf der Suche in die Schaffung einer effizienteren Methode.
  • Verwandte: stackoverflow.com/questions/1106929/...
  • J. F. Sebastian, danke, hatte ich gesehen, links, Diskussionen über dieses und andere ähnliche Probleme(ich hatte gelesen, das wiki auf den Ranzen). Ich wollte nicht, sehen die anderen Lösungen, bevor Sie zu sehen, wenn ich könnte, um ein effizientes selbst einer. Nun, der code lief ich war nirgends in der Nähe der Minuten-Regel und war immer so brute ' ish, ich habe das richtige Ergebnis, ich bin immer noch zögerlich zu schauen, bevor ich einen optimalen Weg zu gehen über diese.
  • sorry, ich bin spät, um die Partei; bitte betrachten Sie meine Antwort!
InformationsquelleAutor tijko | 2012-06-12
Schreibe einen Kommentar