Comment écrire la fonction magic
ci-dessous?
>>> 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
Tu veux dire ça?
num = 1234
lst = [int(i) for i in str(num)]
Vous pourriez faire ceci:
>>> num = 123
>>> lst = map(int, str(num))
>>> lst, type(lst)
([1, 2, 3], <type 'list'>)
magic = lambda num: map(int, str(num))
alors juste faire
magic(12345)
ou
magic(someInt) #or whatever
>>> 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]
Selon mes timings, cette solution est considérablement plus rapide que la méthode de chaîne (magic2
), même pour des exemples plus petits.
>>> def magic2(num):
return [int(i) for i in str(num)]
Horaires:
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
N'utilisez pas Word list comme nom de variable! C'est un nom de python intégré dans le type de données.
Aussi, s'il vous plaît clarifier votre question. Si vous cherchez un moyen de créer une liste d'un membre, procédez comme suit:
a = 123
my_list = [a]
et "pythoniser" la réponse de Cannonade:
a = 123
my_list = [int(d) for d in str(a)]
num = map(int, list(str(num)))
Si c'est nommé comme magique, pourquoi ne pas simplement utiliser la magie:
def magic(x):
if x < 10:
return [x]
else:
return magic(x//10) + [x%10]
Il suffit d'utiliser:
a= str (num)
lst = list(a)
pour python 3.x:
num = 1234
lst = list(map(int, str(num)))
Vous pouvez essayer ceci:
def convert_to_list(number):
return list(map(lambda x: int(x), str(number)))
convert_to_list(1245)