2012-12-16 47 views
20

integer轉換爲list的最快和最乾淨的方法是什麼?將整數轉換爲Python中的列表

例如,將132改爲[1,3,2]23改爲[2,3]。我有一個變量,這是一個int,我希望能夠比較個人數字,所以我認爲把它列入一個列表將是最好的,因爲我可以只做int(number[0])int(number[1])輕鬆地將列表元素轉換回int數字操作。

回答

50

轉換整數到字符串,然後再使用map就其應用int

>>> num = 132 
>>> map(int, str(num)) #note, This will return a map object in python 3. 
[1, 3, 2] 

或使用列表理解:

>>> [int(x) for x in str(num)] 
[1, 3, 2] 
上轉換成字符串一些
+1

我想你寫什麼,但你這樣做是沒有返回相同的: >>> NUM = 132 >>>地圖(INT,STR(NUM))在0x1aed510 <地圖對象>(我不知道如何格式化註釋的權利。) – GinKin

+0

@GinKin對於Python 3,你需要'list(map(int,str(num)))''。 –

2

使用list

In [1]: list(str(123)) 
Out[2]: ['1', '2', '3'] 
+0

爲什麼downvote? – Tim

+10

@Tim:這並沒有給出一個int列表,而是一個字符串列表。 –

4

最短和最好的辦法是已經回答了,但我想到的第一件事是數學方法,所以在這裏它是:

def intlist(n): 
    q = n 
    ret = [] 
    while q != 0: 
     q, r = divmod(q, 10) # Divide by 10, see the remainder 
     ret.insert(0, r) # The remainder is the first to the right digit 
    return ret 

print intlist(3) 
print '-' 
print intlist(10) 
print '--' 
print intlist(137) 

這只是一個有趣的方法,你絕對沒有在實際應用中使用了這樣的事案例。

+2

'list.insert(0,item)'是'O(n)'操作。你可以使用'list.append(item)',並在最後反轉列表:'ret [:: - 1]'。 – jfs

0
n = int(raw_input("n= ")) 

def int_to_list(n): 
    l = [] 
    while n != 0: 
     l = [n % 10] + l 
     n = n // 10 
    return l 

print int_to_list(n) 
+2

請添加說明,而不僅僅是代碼。解釋它的作用。 – MLavrentyev

相關問題