Convertir elementos de la lista de listas anidadas de cadena a entero en python

Tengo una lista anidada de listas en formato de cadena como:

   l1 = [['1', '0', '3'],['4', '0', '6'],['0', '7', '8'],['0', '0', '0', '12']]

Quiero convertir todos los elementos en todas las listas anidadas a enteros, usando una función de mapa dentro de un bucle funciona en este caso:

>>> for i in range(len(l1)):
...     l1[i]=list(map(int,l1[i]))

El problema es que tengo muchas de esas listas con múltiples niveles de anidamiento como:

l2 = ['1','4',['7',['8']],['0','1']]
l3 = ['0',['1','5'],['0','1',['8',['0','2']]]]

¿Hay una forma genérica de resolver este problema sin usar bucles?

Respuestas a la pregunta(4)

Su respuesta a la pregunta