¿Cómo escribo la función magic
a continuación?Convierta un número en una lista de enteros
>>> num = 123
>>> lst = magic(num)
>>>
>>> print lst, type(lst)
[1, 2, 3], <type 'list'>
¿Cómo escribo la función magic
a continuación?Convierta un número en una lista de enteros
>>> num = 123
>>> lst = magic(num)
>>>
>>> print lst, type(lst)
[1, 2, 3], <type 'list'>
a = 123456
b = str(a)
c = []
for digit in b:
c.append (int(digit))
print c
¿Se refiere a esto?
num = 1234
lst = [int(i) for i in str(num)]
Usted puede hacer esto:
>>> num = 123
>>> lst = map(int, str(num))
>>> lst, type(lst)
([1, 2, 3], <type 'list'>)
Tenga en cuenta que en Python 3.0 el mapa devolverá un generador, no una lista. – Stephan202
No utilizar la palabra lista como nombre de la variable! Es un nombre de python incorporado en el tipo de datos.
Además, aclare su pregunta. Si usted está buscando una manera de crear una lista de un solo miembro, haga lo siguiente:
a = 123
my_list = [a]
y "pythonizing" La respuesta de Cañoneo:
a = 123
my_list = [int(d) for d in str(a)]
Me encanta cuando me picotean. Me siento bonita ahora. : P – RedBlueThing
magic = lambda num: map(int, str(num))
a continuación, sólo hacer
magic(12345)
o
magic(someInt) #or whatever
Por DIOS que es asombroso. – franklin
sólo tiene que utilizar:
a= str (num)
lst = list(a)
que devolvería una lista de caracteres, no * directamente * enteros –
>>> from collections import deque
>>> def magic(num):
digits = deque()
while True:
num,r = divmod(num,10)
digits.appendleft(r)
if num == 0:
break
return list(digits)
>>> magic(123)
[1, 2, 3]
Según mis tiempos, esta solución es considerablemente más rápido que el método de cadena (magic2
), incluso para los más pequeños ejemplos.
>>> def magic2(num):
return [int(i) for i in str(num)]
Tiempos:
magic
>>> timeit.timeit(setup='from __main__ import magic', stmt='magic(123)')
1.3874572762508706
>>> timeit.timeit(setup='from __main__ import magic', stmt='magic(999999999)')
3.2624468999981673
magic2
>>> timeit.timeit(setup='from __main__ import magic2', stmt='magic2(123)')
3.693756106896217
>>> timeit.timeit(setup='from __main__ import magic2', stmt='magic2(999999999)')
10.485281719412114
Esta es la respuesta más útil. – spider
'map (int, str (n))' de la respuesta de @Wilbeibi es más rápido que ambos (probado en Python3) –
@FelipeBuccioni 'map' en python 3 solo creará un generador, no una' lista'. Necesitas 'list (map (int, str (n))'. 'Map (int, str (n))' no hace prácticamente nada por sí mismo. – jamylak
num = map(int, list(str(num)))
Si se nombra como magia, ¿por qué no usar magia ?:
def magic(x):
if x < 10:
return [x]
else:
return magic(x//10) + [x%10]
¡Lo único que falta son algunas llaves! ;) –
Volviendo a esta respuesta muchos años después y después de trabajar en Python por un tiempo. Este es mi favorito -> [int (x) para x en str (a)] que pasa a ser la respuesta de @BjornTipling :) – RedBlueThing