2009-04-23 4 views

Répondre

12
a = 123456 
b = str(a) 
c = [] 

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

print c 
+18

Tout ce qui manque est quelques accolades! ;) –

+5

. Vous avez découvert mon profond secret noir (C++). Je suis humilié par les autres répondants sublimes python-ness. – RedBlueThing

+2

Retour à cette réponse de nombreuses années plus tard et après avoir travaillé en Python pendant un certain temps. Celui-ci est mon préféré -> [int (x) pour x dans str (a)] qui se trouve être la réponse de @ BjornTipling :) – RedBlueThing

64

Vous voulez dire ceci?

num = 1234 
lst = [int(i) for i in str(num)] 
13

Vous pouvez le faire:

>>> num = 123 
>>> lst = map(int, str(num)) 
>>> lst, type(lst) 
([1, 2, 3], <type 'list'>) 
+5

Notez que dans la carte Python 3.0 retournera un générateur, pas une liste. – Stephan202

5

Ne pas utiliser le mot liste comme nom de variable! C'est un nom de python construit en type de données.

Veuillez également préciser votre question. Si vous êtes à la recherche d'un moyen de créer une liste d'un membre, procédez comme suit:

a = 123 
my_list = [a] 

et "pythonizing" La réponse de canonnade:

a = 123 
my_list = [int(d) for d in str(a)] 
+0

Je l'aime quand je suis pythonisé. Je me sens bien maintenant. : P – RedBlueThing

7
magic = lambda num: map(int, str(num)) 

alors il suffit de faire

magic(12345) 

ou

magic(someInt) #or whatever 
+0

Par DIEU c'est incroyable. – franklin

0

utiliser Just:

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

qui retournerait une liste de caractères, pas * directement * entiers –

6
>>> 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 beaucoup 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)] 

synchronisations:

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 
+0

Ceci est la réponse la plus utile. – spider

+0

'map (int, str (n))' depuis la réponse de @Wilbeibi est plus rapide que les deux (testé sur Python3) –

+0

@FelipeBuccioni 'map' dans python 3 va juste créer un générateur, pas un' list'. Vous avez besoin de 'list (map (int, str (n))'. 'Map (int, str (n))' ne fait presque rien par lui-même. – jamylak

2
num = map(int, list(str(num))) 
1

Si elle est nommée magie, pourquoi ne pas simplement utiliser la magie:

def magic(x): 
    if x < 10: 
     return [x] 
    else: 
     return magic(x//10) + [x%10]