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.