N выбрать N / 2 подсписки списка
Есть ли эффективный способ в Python, чтобы получить все разделы списка размераn
на два подмножества размераn/2
? Я хочу получить некоторую итеративную конструкцию, такую, чтобы каждая итерация обеспечивала два непересекающихся подмножества исходного списка, каждый из которых имел размерn/2
.
Например:
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
Подмножества должны быть непересекающимися, например,[[1,2,3], [4,5,6]]
действует, но[[1,2,3], [3,4,5]]
не является. Порядок двух подмножеств не имеет значения, например,[[1,2,3], [4,5,6]]
не считается отличным от[[4,5,6], [1,2,3]]
и, следовательно, только один из этих двух должен появляться в итерации. Порядок в каждом подмножестве также не имеет значения, поэтому[[1,2,3], [4,5,6]]
, [[1,3,2], [4,5,6]]
, [[3,2,1], [6,5,4]]
и т. д. все они считаются одинаковыми, поэтому в течение всей итерации должен отображаться только один из них.