N wähle N / 2 Unterlisten einer Liste

Ist es in Python eine effiziente Möglichkeit, alle Partitionen einer Liste mit der Größe @ abzurufen in zwei Teilmengen der Größen/2? Ich möchte ein iteratives Konstrukt erhalten, so dass jede Iteration zwei nicht überlappende Teilmengen der ursprünglichen Liste liefert, wobei jede Teilmenge die Größe @ han/2.

Beispielsweise

A = [1,2,3,4,5,6]    # here n = 6
# some iterative construct
    # in each iteration, a pair of subsets of size n/2
    # subsets = [[1,3,4], [2,5,6]] for example for one of the iterations
    # subsets = [[1,2,5],[3,4,6]] a different iteration example

Die Teilmengen sollten sich nicht überlappen, z.[[1,2,3], [4,5,6]] ist gültig aber[[1,2,3], [3,4,5]] ist nicht. Die Reihenfolge der beiden Teilmengen spielt keine Rolle, z.[[1,2,3], [4,5,6]] zählt nicht als verschieden von[[4,5,6], [1,2,3]] und daher sollte in einer Iteration nur einer von beiden vorkommen. Die Reihenfolge innerhalb jeder Untergruppe spielt ebenfalls keine Rolle, also[[1,2,3], [4,5,6]], [[1,3,2], [4,5,6]], [[3,2,1], [6,5,4]] usw. alle zählen als gleich und daher sollte nur einer von ihnen in der gesamten Iteration angezeigt werden.

Antworten auf die Frage(10)

Ihre Antwort auf die Frage