Comment écrire la fonction magic
ci-dessous?Convertir un nombre à une liste d'entiers
>>> num = 123
>>> lst = magic(num)
>>>
>>> print lst, type(lst)
[1, 2, 3], <type 'list'>
Comment écrire la fonction magic
ci-dessous?Convertir un nombre à une liste d'entiers
>>> 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
Vous voulez dire ceci?
num = 1234
lst = [int(i) for i in str(num)]
Vous pouvez le faire:
>>> num = 123
>>> lst = map(int, str(num))
>>> lst, type(lst)
([1, 2, 3], <type 'list'>)
Notez que dans la carte Python 3.0 retournera un générateur, pas une liste. – Stephan202
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)]
Je l'aime quand je suis pythonisé. Je me sens bien maintenant. : P – RedBlueThing
magic = lambda num: map(int, str(num))
alors il suffit de faire
magic(12345)
ou
magic(someInt) #or whatever
Par DIEU c'est incroyable. – franklin
utiliser Just:
a= str (num)
lst = list(a)
qui retournerait une liste de caractères, pas * directement * entiers –
>>> 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
Ceci est la réponse la plus utile. – spider
'map (int, str (n))' depuis la réponse de @Wilbeibi est plus rapide que les deux (testé sur Python3) –
@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
num = map(int, list(str(num)))
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]
Tout ce qui manque est quelques accolades! ;) –
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