2009-12-15 119 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] 

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