将数字转换为整数列表

Posted

技术标签:

【中文标题】将数字转换为整数列表【英文标题】: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'>

【问题讨论】:

Splitting integer in Python?的可能重复 魔术.. 提问的好方法:)。 【参考方案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)

【讨论】:

将返回一个字符列表,而不是直接整数

以上是关于将数字转换为整数列表的主要内容,如果未能解决你的问题,请参考以下文章

如何将字符串数字转换为列表中的整数?

将列表中的数字字符串转换为数字 int

编写一个函数,将一个数字字符串转换为一个整数

python把一个数字列表转化为一个数字

Python 怎么将列表类字典组字符串转换为列表?

编程:将一个数字字符串转换成一个整数(不得调用C语言提供的将字符串转换为整数的函数)。