N escolha N / 2 sublistas de uma lista

Existe uma maneira eficiente no Python de obter todas as partições de uma lista de tamanhon em dois subconjuntos de tamanhon/2? Eu quero obter alguma construção iterativa, de modo que cada iteração forneça dois subconjuntos não sobrepostos da lista original, cada subconjunto tendo tamanhon/2.

Por exemplo:

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

Os subconjuntos não devem se sobrepor, por exemplo[[1,2,3], [4,5,6]] é válido mas[[1,2,3], [3,4,5]] não é. A ordem dos dois subconjuntos não importa, p.[[1,2,3], [4,5,6]] não conta como diferente de[[4,5,6], [1,2,3]] e, portanto, apenas um desses dois deve aparecer em uma iteração. A ordem em cada subconjunto também não importa, portanto[[1,2,3], [4,5,6]], [[1,3,2], [4,5,6]], [[3,2,1], [6,5,4]], etc. todos contam como o mesmo e, portanto, apenas um deles deve aparecer na iteração inteira.

questionAnswers(5)

yourAnswerToTheQuestion