¿Cómo calculo todas las posibilidades para una matriz de números / bits (en python, o cualquier idioma)?

He estado destrozando mi cerebro durante 3 horas seguidas, pero todavía no lo entiendo, así que pregunto aquí. (Escribí Python en el título, pero esto podría ser para casi cualquier idioma)

Supongamos que tengo una matriz de bits (pero también pueden ser enteros en un rango definido) de longitud fija n, digamos 5.

array=[0,1,1,0,0]

Ahora, ¿cómo genero TODAS las matrices, que son posibles en el rango de números (en el caso de los bits, 2)?

Asi que:

[0,0,0,0,0], [0,0,0,0,1], [0,0,0,1,0], [0,0,0,1,1] ...

He intentado buscar una solución aquí, pero siempre encuentro algo que es similar, pero que no resuelve mi problema.

Para resolver esto, he intentado varios bucles, pero siempre termino obteniendo una posibilidad más de una vez (no debería ocurrir) o no obteniendo todas las posibles.

Puedo lograr hacer esto con sentencias if (para verificar si ya existe una combinación), pero eso parece muy poco sofisticado.

¿Existe un método simple, utilizando solo bucles, para obtener todas las posibilidades?

Gracias

Editar: Como esto se mencionó a continuación, no, esto no es tarea. Esto es para la investigación con el fin de implementar una red bayesiana de estados binarios. (encendido apagado).

Respuestas a la pregunta(4)

Su respuesta a la pregunta