Преобразовать число в список целых чисел - PullRequest
25 голосов
/ 23 апреля 2009

Как мне написать функцию magic ниже?

>>> num = 123
>>> lst = magic(num)
>>>
>>> print lst, type(lst)
[1, 2, 3], <type 'list'>

Ответы [ 11 ]

72 голосов
/ 23 апреля 2009

Вы имеете в виду это?

num = 1234
lst = [int(i) for i in str(num)]
15 голосов
/ 23 апреля 2009
a = 123456
b = str(a)
c = []

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

print c
14 голосов
/ 23 апреля 2009

Вы можете сделать это:

>>> num = 123
>>> lst = map(int, str(num))
>>> lst, type(lst)
([1, 2, 3], <type 'list'>)
9 голосов
/ 23 апреля 2009
magic = lambda num: map(int, str(num))

тогда просто сделай

magic(12345) 

или

magic(someInt) #or whatever
6 голосов
/ 06 мая 2012
>>> 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]

Согласно моим временам, это решение значительно быстрее, чем строковый метод (magic2), даже для небольших примеров.

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

Тайминги:

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
5 голосов
/ 23 апреля 2009

Не используйте слово list в качестве имени переменной! Это имя Python, встроенного в тип данных.

Также, пожалуйста, уточните свой вопрос. Если вы ищете способ создать список из одного члена, сделайте следующее:

a = 123
my_list = [a]

и ответ "питонизирующей" канонады:

a = 123
my_list = [int(d) for d in str(a)]
2 голосов
/ 26 января 2015
num = map(int, list(str(num)))
1 голос
/ 11 марта 2016

Если оно называется магическим, почему бы просто не использовать магию:

def magic(x):
    if x < 10:
        return [x]
    else:
        return magic(x//10) + [x%10]
0 голосов
/ 11 декабря 2018

для Python 3.x:

num = 1234
lst = list(map(int, str(num)))
0 голосов
/ 22 марта 2018

Вы можете попробовать это:

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

convert_to_list(1245)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...