【问题标题】:Convert a number to a list of integers将数字转换为整数列表
【发布时间】:2010-10-21 06:59:57
【问题描述】:

下面的magic函数怎么写?

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

【问题讨论】:

标签: python list integer


【解决方案1】:

你是说这个吗?

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

【讨论】:

    【解决方案2】:
    a = 123456
    b = str(a)
    c = []
    
    for digit in b:
        c.append (int(digit))
    
    print c
    

    【讨论】:

      【解决方案3】:

      你可以这样做:

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

      【讨论】:

      • 请注意,在 Python 3.0 中 map 将返回一个生成器,而不是一个列表。
      【解决方案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
        

        【讨论】:

        • @Wilbeibi 的答案中的map(int, str(n)) 比两者都快(在 Python3 上测试)
        • @FelipeBuccioni map 在 python 3 中只会创建一个生成器,而不是 list。你需要list(map(int, str(n))map(int, str(n)) 自己几乎什么都不做。
        【解决方案6】:

        不要使用list这个词作为变量名!它是python内置数据类型的名称。

        另外,请澄清您的问题。如果您正在寻找一种方法来创建一个成员列表,请执行以下操作:

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

              对于 python 3.x:

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

              【讨论】:

                【解决方案10】:

                你可以试试这个:

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

                【讨论】:

                  【解决方案11】:

                  只需使用:

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

                  【讨论】:

                  • 将返回一个字符列表,而不是直接整数
                  猜你喜欢
                  • 2012-12-04
                  • 1970-01-01
                  • 1970-01-01
                  • 2014-10-17
                  • 1970-01-01
                  • 1970-01-01
                  • 2021-10-14
                  相关资源
                  最近更新 更多