N elige N / 2 sublistas de una lista
¿Hay alguna manera eficiente en Python para obtener todas las particiones de una lista de tamañosn
en dos subconjuntos de tamañon/2
? Quiero obtener una construcción iterativa de modo que cada iteración proporcione dos subconjuntos no superpuestos de la lista original, cada subconjunto tiene tamañon/2
.
Por ejemplo:
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
Los subconjuntos no deben superponerse, p.[[1,2,3], [4,5,6]]
es valido pero[[1,2,3], [3,4,5]]
no es. El orden de los dos subconjuntos no importa, p.[[1,2,3], [4,5,6]]
no cuenta como diferente de[[4,5,6], [1,2,3]]
y, por lo tanto, solo uno de esos dos debería aparecer en una iteración. El orden dentro de cada subconjunto tampoco importa, así que[[1,2,3], [4,5,6]]
, [[1,3,2], [4,5,6]]
, [[3,2,1], [6,5,4]]
, etc., todos cuentan igual, por lo que solo uno de ellos debería aparecer en toda la iteración.