¿Cómo manejar la división de grandes números en Python?

Tengo un número de 100 dígitos y estoy tratando de poner todos los dígitos del número en una lista, de modo que pueda realizar operaciones en ellos. Para hacer esto, estoy usando el siguiente código:

for x in range (0, 1000): list[x] = number % 10 number = number / 10 

Pero el problema al que me estoy enfrentando es que recibo un error de desbordamiento, algo así como un número demasiado grande de coma flotante / entero. Incluso traté de usar la siguiente alternativa

 number = int (number / 10) 

¿Cómo puedo dividir este gran número con el resultado de nuevo en tipo entero, es decir, sin flotadores?

En Python 3, el number / 10 intentará devolver un float . Sin embargo, los valores de punto flotante no pueden tener un tamaño arbitrariamente grande en Python y, si el number es grande, se generará un OverflowError .

Puede encontrar el máximo que los valores de punto flotante de Python pueden tomar en su sistema utilizando el módulo sys :

 >>> import sys >>> sys.float_info.max 1.7976931348623157e+308 

Para evitar esta limitación, utilice // para obtener un número entero de la división de los dos números enteros:

 number // 10 

Esto devolverá el valor de piso int del number / 10 (no produce un flotador). A diferencia de los flotadores, los valores int pueden ser tan grandes como los necesite en Python 3 (dentro de los límites de memoria).

Ahora puedes dividir los números grandes. Por ejemplo, en Python 3:

 >>> 2**3000 / 10 OverflowError: integer division result too large for a float >>> 2**3000 // 10 123023192216111717693155881327... 

Si tiene un número entero y quiere cada dígito en una lista, puede usar:

 >>> map(int,list(str(number))) [1, 5, 0, 3, 0, 0, 7, 6, 4, 2, 2, 6, 8, 3, 9, 7, 5, 0, 3, 6, 6, 4, 0, 5, 1, 2, 4, 3, 7, 8, 2, 5, 2, 4, 4, 5, 4, 8, 4, 0, 6, 6, 4, 5, 0, 9, 2, 4, 8, 9, 2, 9, 7, 8, 7, 3, 9, 9, 9, 7, 0, 1, 7, 4, 8, 2, 4, 4, 2, 9, 6, 9, 5, 1, 7, 1, 3, 4, 8, 5, 1, 3, 3, 1, 7, 9, 0, 1, 0, 1, 9, 3, 8, 4, 2, 0, 1, 9, 2, 9] 

transforma el int en una cadena, luego la list tomará cada carácter de la cadena y lo pondrá en una lista. Finalmente, el map convertirá cada elemento de la lista de nuevo en un int.

Python manejará automáticamente grandes int s de longitud arbitraria. Lo que no hará es manejar float de una longitud arbitraria, por lo que debe asegurarse de que no esté obteniendo flotadores en el camino.

Intente int(number) % 10 . Solo se pueden modificar enteros.