Generator for a list of 2-partitions of N qubits such that all pairs of qubits are split in at least one partition, This follows a variation on ArXiv:1908.0562 - instead of explicitly partitioning the list based on the binary indices of the qubits, we repeatedly divide the list in two and then zip it back together.

qubit_list list

list of qubits to be partitioned

num_iterations int or None

number of iterations to perform. If None, will be set to ceil(log2(len(qubit_list)))

partition iterator of tuples of lists

the required partitioning