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?