tutorial machine learning python

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