web-dev-qa-db-fra.com

Convertir un nombre en liste d'entiers

Comment écrire la fonction magic ci-dessous?

>>> num = 123
>>> lst = magic(num)
>>>
>>> print lst, type(lst)
[1, 2, 3], <type 'list'>
25
user94774
a = 123456
b = str(a)
c = []

for digit in b:
    c.append (int(digit))

print c
15
RedBlueThing

Tu veux dire ça?

num = 1234
lst = [int(i) for i in str(num)]
70
Bjorn Tipling

Vous pourriez faire ceci:

>>> num = 123
>>> lst = map(int, str(num))
>>> lst, type(lst)
([1, 2, 3], <type 'list'>)
14
John Fouhy
magic = lambda num: map(int, str(num))

alors juste faire

magic(12345) 

ou 

magic(someInt) #or whatever
9
Alex
>>> 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
6
jamylak

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)]
5
Boris Gorelik
num = map(int, list(str(num)))
2
wilbeibi

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]
1
englealuze

Il suffit d'utiliser: 

a= str (num)
lst = list(a)
0
MrDHat

pour python 3.x:

num = 1234
lst = list(map(int, str(num)))
0
Marko Tankosic

Vous pouvez essayer ceci:

def convert_to_list(number):
    return list(map(lambda x: int(x), str(number)))

convert_to_list(1245)
0
Anthony