machine - Dividir entero en Python?
nltk bag of words (7)
Mi entrada entera es 12345
, quiero dividirla y ponerla en una matriz como 1, 2, 3, 4, 5
. ¿Cómo podré hacerlo?
Dividir un solo número en sus dígitos (como respondieron todos):
>>> [int(i) for i in str(12345)]
[1, 2, 3, 4, 5]
Pero, para obtener los dígitos de una lista de números:
>>> [int(d) for d in ''''.join(str(x) for x in [12, 34, 5])]
[1, 2, 3, 4, 5]
Así que me gustaría saber, si podemos hacer lo anterior, de manera más eficiente.
Las cadenas son tan iterables como las matrices, así que simplemente conviértalo en una cadena:
str(12345)
como @nd dice pero usando la función incorporada de int para convertir a una base diferente
>>> [ int(i,16) for i in ''0123456789ABCDEF'' ]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
>>> [int(i,2) for i in "100 010 110 111".split()]
[4, 2, 6, 7]
No sé cuál es el objetivo final, pero eche un vistazo también dentro del módulo decimal de python para hacer cosas como
>>> Decimal(''3.1415926535'') + Decimal(''2.7182818285'')
Decimal(''5.85987'')
de acuerdo con las respuestas anteriores, las cadenas son iterables, por lo que si necesita una lista de sus dígitos, puede agregarla una por una usando:
digits = []
digits += str(12345)
return array como cadena
>>> list(str(12345))
[''1'', ''2'', ''3'', ''4'', ''5'']
return array como entero
>>> map(int,str(12345))
[1, 2, 3, 4, 5]
>>> [int(i) for i in str(12345)]
[1, 2, 3, 4, 5]
[int(i) for i in str(number)]
o, si no desea usar una lista de comprensión o si desea usar una base diferente de 10
from __future__ import division # for compatibility of // between Python 2 and 3
def digits(number, base=10):
assert number >= 0
if number == 0:
return [0]
l = []
while number > 0:
l.append(number % base)
number = number // base
return l