2012-12-16 51 views
20

Cách nhanh nhất và sạch nhất để chuyển đổi một integer thành một số list là gì?chuyển đổi số nguyên thành danh sách trong python

Ví dụ: thay đổi 132 thành [1,3,2]23 thành [2,3]. Tôi có một biến số là int và tôi muốn có thể so sánh các chữ số riêng lẻ vì vậy tôi nghĩ việc đưa nó vào danh sách sẽ là tốt nhất, vì tôi có thể làm int(number[0]), int(number[1]) để dễ dàng chuyển đổi phần tử danh sách trở lại thành int số hoạt động.

Trả lời

50

Chuyển đổi số nguyên để chuỗi đầu tiên, và sau đó sử dụng map để áp dụng int vào nó:

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

hoặc sử dụng một danh sách hiểu:

>>> [int(x) for x in str(num)] 
[1, 3, 2] 
+1

tôi đã cố gắng những gì bạn đã viết nhưng nó đã không quay trở lại giống như bạn đã làm: >>> num = 132 >>> bản đồ (int, str (num)) đối tượng (Tôi không biết định dạng bình luận đúng như thế nào.) – GinKin

+0

@GinKin Đối với Python 3 bạn cần 'list (map (int, str (num)))'. –

2

Sử dụng list về một số chuyển thành chuỗi:

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

Tại sao downvote? – Tim

+10

@Tim: Điều đó không cung cấp danh sách int nhưng danh sách các chuỗi. –

4

Ngắn nhất và Cách tốt nhất đã được trả lời, nhưng điều đầu tiên tôi nghĩ đến là cách toán học, vì vậy ở đây là:

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) 

Nó chỉ là một cách tiếp cận thú vị, bạn chắc chắn không cần phải sử dụng một điều như vậy trong sử dụng thực tế các trường hợp.

+2

'list.insert (0, item)' là hoạt động 'O (n)'. Bạn có thể sử dụng 'list.append (item)' thay vào đó và đảo ngược danh sách ở cuối: '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

Vui lòng thêm giải thích và không chỉ mã. Giải thích những gì nó làm. – MLavrentyev

Các vấn đề liên quan