将数字转换为整数列表

use*_*774 25 python integer list

我如何编写magic下面的功能?

>>> num = 123
>>> lst = magic(num)
>>>
>>> print lst, type(lst)
[1, 2, 3], <type 'list'>
Run Code Online (Sandbox Code Playgroud)

Bjo*_*orn 73

你是这个意思?

num = 1234
lst = [int(i) for i in str(num)]
Run Code Online (Sandbox Code Playgroud)


Red*_*ing 17

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

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

print c
Run Code Online (Sandbox Code Playgroud)

  • 所有缺少的是一些花括号!;) (20认同)
  • <轻笑>.你揭开了我深深的黑暗秘密(C++).我很谦卑其他受访者称赞python-ness. (6认同)
  • 许多年后和使用Python工作一段时间后回到这个答案.这个是我最喜欢的 - > [str(a)中的[int(x)for x]恰好是@ BjornTipling的答案:) (3认同)

Joh*_*uhy 14

你可以这样做:

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

  • 请注意,在Python 3.0中,map将返回生成器,而不是列表. (5认同)

Ale*_*lex 9

magic = lambda num: map(int, str(num))
Run Code Online (Sandbox Code Playgroud)

然后就做

magic(12345) 
Run Code Online (Sandbox Code Playgroud)

要么

magic(someInt) #or whatever
Run Code Online (Sandbox Code Playgroud)

  • 天哪,这太神奇了。 (2认同)

jam*_*lak 6

>>> 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]
Run Code Online (Sandbox Code Playgroud)

根据我的时间,这个解决方案比字符串方法(magic2)快得多,即使是较小的例子.

>>> def magic2(num):
        return [int(i) for i in str(num)]
Run Code Online (Sandbox Code Playgroud)

时序:

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
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)


Bor*_*lik 5

不要使用单词列表作为变量名!它是以数据类型构建的python的名称.

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

a = 123
my_list = [a]
Run Code Online (Sandbox Code Playgroud)

和"pythonizing"Cannonade的答案:

a = 123
my_list = [int(d) for d in str(a)]
Run Code Online (Sandbox Code Playgroud)