Подтвердить что ты не робот

Преобразование числа в список целых чисел

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

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

Ответ 1

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

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

print c

Ответ 2

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

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

Ответ 3

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

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

Ответ 4

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

тогда просто

magic(12345) 

или

magic(someInt) #or whatever

Ответ 5

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

Ответ 6

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

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

a = 123
my_list = [a]

и "pythonizing" ответ Cannonade:

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

Ответ 7

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

Ответ 8

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

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

Ответ 9

Просто используйте:

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

Ответ 10

Разделение на него одного номера цифры (как ответили все):

>>> [int(i) for i in str(12345)]
[1, 2, 3, 4, 5]

Но, чтобы получить цифры из списка чисел:

>>> [int(d) for d in ''.join(str(x) for x in [12, 34, 5])]
[1, 2, 3, 4, 5]

Так хотелось бы знать, если мы сможем сделать выше, более эффективно.

Ответ 11

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

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

convert_to_list(1245)

Ответ 12

для python 3.x:

num = 1234
lst = list(map(int, str(num)))