¿Cómo obtener todas las combinaciones posibles de elementos de la lista bidimensional en Python?

No encontré una mejor manera de formular esta pregunta en el título. Si puede, edite.

Tengo una lista de listas como esta:

a = [['a','b'],[1,2]]

ahora, me gustaría una función que escupe todas las combinaciones posibles como esta:

[['a',1],['a',2],['b',1],['b',2]]

donde ni el número de listas en a se conoce de antemano, ni la longitud de cada una de las sublistas se conoce de antemano, pero todas las combinaciones que salen deben contener 1 elemento de cada sublista.

Respuestas a la pregunta(3)

Su respuesta a la pregunta