Escribe los dígitos de un número en una matriz

Quiero calcular con dígitos separados de un número muy largo. ¿Cómo puedo hacer esto en Python2.7? Pensé en escribir de alguna manera los dígitos en una matriz para poder acceder a los dígitos con matriz (x):

number = 123456789123456789 array = [1,2,3,4,5,6,7,8,9,1,2,3,4,5,6,7,8,9] 

El problema es que el número tiene tantos dígitos, que llevaría mucho tiempo hacerlo manualmente. Entonces, ¿cómo puedo hacer esto automáticamente?

Puedes usar las funciones map , int y str esta manera

 print map(int, str(number)) 

str función str convierte el number en una cadena.

map función de map aplica la función int a todos y cada uno de los elementos del número de cadena, para convertir la cadena en un entero.

Salida

 [1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9] 

Si está haciendo esto una y otra vez, como en un bucle, entonces la comprensión de la lista será más rápida que el enfoque del map

 number = 123456789123456789 from timeit import timeit print timeit("map(int, str(number))", "from __main__ import number") print timeit("[int(dig) for dig in str(number)]", "from __main__ import number") 

Salida en mi máquina

 12.8388962786 10.7739010307 

También puede utilizar un enlace de comprensión de lista de este.

 array = [int(x) for x in str(number)] 

Como alternativa, la solución puramente matemática está abajo. Al dividir repetidamente entre 10 y tomar el rest, puede extraer cada dígito.

 n = 123456789123456789 result = [] while n != 0: n, d = divmod(n, 10) result.append(int(d)) result.reverse() print result # [1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9] 

Simplemente puede iterar sobre cada dígito en número y empujar en una matriz. Prueba esto

 result = [] for d in str(number): result.append (int(d)) print result