2009-12-15 242 views

回答

61
>>> [int(i) for i in str(12345)] 

[1, 2, 3, 4, 5] 
50

返回数组作为字符串

>>> list(str(12345)) 
['1', '2', '3', '4', '5'] 

返回数组作为整数

>>> map(int,str(12345)) 
[1, 2, 3, 4, 5] 
+3

+1对于映射函数 – Ikke 2009-12-15 11:47:07

+4

在Python3中,这将是'list(map(int,str(12345)))' – 2017-08-26 20:51:56

1

字符串是一样可迭代如阵列,所以只是将其转换为字符串:

str(12345) 
+0

OP想'int's不'str'ings – jamylak 2018-02-04 04:19:44

8
[int(i) for i in str(number)] 

,或者,如果不想使用列表理解,或者您希望使用不同的基地从10

from __future__ import division # for compatibility of // between Python 2 and 3 
def digits(number, base=10): 
    assert number >= 0 
    if number == 0: 
     return [0] 
    l = [] 
    while number > 0: 
     l.append(number % base) 
     number = number // base 
    return l 
+0

好的调用,这就是我的即将写:) – Russell 2009-12-15 11:20:51

+0

@nd你可以把数字的基地里面int像int(i,2)二进制看到我的帖子 – fabrizioM 2009-12-15 11:29:07

2

像@nd说,但使用INT的内置函数转换为不同的基

>>> [ int(i,16) for i in 'ABCDEF' ] 
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15] 

>>> [int(i,2) for i in "100 010 110 111".split()] 
[4, 2, 6, 7] 

我不知道什么是最终目标,但看看也小数模块蟒蛇的内部做的东西一样

>>> Decimal('3.1415926535') + Decimal('2.7182818285') 
Decimal('5.85987') 
+0

'小数'对这个问题没用 – jamylak 2018-02-04 04:20:44

-1

根据以前的答案,字符串是可迭代的,所以如果你需要你的数字的列表,你可以使用一个附加它由一个:

digits = [] 
digits += str(12345) 
0

分割单号是数字(如所有回答) :

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

所以想知道,如果我们能做到以上,更有效。