Convert a number to a list of integers

前端 未结 11 1411
渐次进展
渐次进展 2020-12-03 02:44

How do I write the magic function below?

>>> num = 123
>>> lst = magic(num)
>>>
>>> print lst, type(lst)
[1,         


        
相关标签:
11条回答
  • 2020-12-03 03:24

    Don't use the word list as variable name! It is a name of python built in data type.

    Also, please clarify your question. If you are looking for a way to create a one-member list, do the following:

    a = 123
    my_list = [a]
    

    and "pythonizing" Cannonade's answer:

    a = 123
    my_list = [int(d) for d in str(a)]
    
    0 讨论(0)
  • 2020-12-03 03:26

    for python 3.x:

    num = 1234
    lst = list(map(int, str(num)))
    
    0 讨论(0)
  • 2020-12-03 03:27

    You could do this:

    >>> num = 123
    >>> lst = map(int, str(num))
    >>> lst, type(lst)
    ([1, 2, 3], <type 'list'>)
    
    0 讨论(0)
  • 2020-12-03 03:27

    You can try this:

    def convert_to_list(number):
        return list(map(lambda x: int(x), str(number)))
    
    convert_to_list(1245)
    
    0 讨论(0)
  • 2020-12-03 03:30
    >>> 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]
    

    According to my timings, this solution is considerably faster than the string method (magic2), even for smaller examples.

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

    Timings:

    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 讨论(0)
提交回复
热议问题