it-swarm.com.de

Konvertieren Sie eine Zahl in eine Liste von Ganzzahlen

Wie schreibe ich die magic-Funktion unten?

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

Du meinst das?

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

Sie könnten das tun:

>>> 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))

dann einfach machen

magic(12345) 

oder 

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]

Nach meinen Timings ist diese Lösung auch bei kleineren Beispielen wesentlich schneller als die String-Methode (magic2).

>>> def magic2(num):
        return [int(i) for i in str(num)]

Zeiten:

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

Verwenden Sie nicht das Wort list als Variablennamen! Dies ist der Name eines in Python eingebauten Datentyps.

Bitte klären Sie auch Ihre Frage. Wenn Sie nach einer Möglichkeit suchen, eine Ein-Mitglieder-Liste zu erstellen, führen Sie folgende Schritte aus:

a = 123
my_list = [a]

und "pythonizing" Cannonades Antwort:

a = 123
my_list = [int(d) for d in str(a)]
5
Boris Gorelik
num = map(int, list(str(num)))
2
wilbeibi

Wenn es als Magie bezeichnet wird, warum nicht einfach Magie verwenden:

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

Benutz einfach : 

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

für Python 3.x:

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

Sie können dies versuchen:

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

convert_to_list(1245)
0
Anthony