Come si scrive la funzione magic
di seguito?Convertire un numero in un elenco di numeri interi
>>> num = 123
>>> lst = magic(num)
>>>
>>> print lst, type(lst)
[1, 2, 3], <type 'list'>
Come si scrive la funzione magic
di seguito?Convertire un numero in un elenco di numeri interi
>>> 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
Vuoi dire questo?
num = 1234
lst = [int(i) for i in str(num)]
Si potrebbe fare questo:
>>> num = 123
>>> lst = map(int, str(num))
>>> lst, type(lst)
([1, 2, 3], <type 'list'>)
Si noti che in Python 3.0 la mappa restituirà un generatore, non una lista. – Stephan202
Non utilizzare la parola lista come nome della variabile! È un nome di python costruito nel tipo di dati.
Inoltre, chiarire la domanda. Se siete alla ricerca di un modo per creare una lista di un membro, effettuare le seguenti operazioni:
a = 123
my_list = [a]
e "pythonizing" La risposta di Cannonade:
a = 123
my_list = [int(d) for d in str(a)]
Mi piace quando ottengo pythonized. Mi sento carina adesso. : P – RedBlueThing
magic = lambda num: map(int, str(num))
poi basta fare
magic(12345)
o
magic(someInt) #or whatever
Per DIO è incredibile. – franklin
Basta usare:
a= str (num)
lst = list(a)
che restituirebbe un elenco di caratteri, non * direttamente * interi –
>>> 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]
Secondo i miei tempi, questa soluzione è notevolmente più veloce rispetto al metodo stringa (magic2
), anche per i più piccoli esempi.
>>> def magic2(num):
return [int(i) for i in str(num)]
Timings:
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
Questa è la risposta più utile. – spider
'map (int, str (n))' dalla risposta di @Wilbeibi è più veloce di entrambi (testato su Python3) –
@FelipeBuccioni 'map' in python 3 creerà solo un generatore, non un' elenco'. È necessario 'list (map (int, str (n))'. 'Map (int, str (n))' praticamente non fa nulla da solo. – jamylak
num = map(int, list(str(num)))
Se viene chiamato come magia, perché non usare solo la magia:
def magic(x):
if x < 10:
return [x]
else:
return magic(x//10) + [x%10]
Tutto ciò che manca sono alcune parentesi graffe! ;) –
Tornando a questa risposta molti anni dopo e dopo aver lavorato in Python per un po '. Questo è il mio preferito -> [int (x) per x in str (a)] che è la risposta di @ BjornTipling :) – RedBlueThing