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.

Respuestas a la pregunta(5)

Su respuesta a la pregunta