2012-12-16 14 views
20

Jaki jest najszybszy i najczystszy sposób przekonwertowania integer na list? Na przykład zmień 132 na [1,3,2] i 23 na [2,3]. Mam zmienną, która jest int, i chcę móc porównać poszczególne cyfry, więc pomyślałem, że zrobienie tego na liście byłoby najlepsze, ponieważ mogę po prostu zrobić int(number[0]), int(number[1]), aby łatwo przekonwertować element list z powrotem na int dla operacje cyfrowe.konwersja liczby całkowitej na listę w pythonie

Odpowiedz

50

Konwersja liczbę całkowitą na łańcuch, a potem użyć map zastosować int na nim:

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

lub używając wyrażeń listowych:

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

Próbowałem co napisałeś, ale nie wrócił samo jak ty: >>> num = 132 >>> mapy (int, STR (NUM)) (Nie wiem, jak dobrze sformatować komentarz). – GinKin

+0

@GinKin Dla Pythona 3 potrzebujesz 'list (map (int, str (num)))'. –

2

Zastosowanie list od szeregu zamieniane na ciąg znaków:

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

Dlaczego upadek? – Tim

+10

@Tim: To nie daje listy int, ale listę ciągów znaków. –

4

Najkrótszy i Najlepszym sposobem jest już odpowiedział, ale pierwszą rzeczą, myślałem był sposób matematyczny, więc tutaj jest:

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) 

to tylko kolejny interesujące podejście, na pewno nie trzeba używać coś takiego w praktyce przypadki.

+2

'list.insert (0, element)' jest operacją 'O (n)'. Zamiast tego możesz użyć 'list.append (item)' i odwrócić listę na końcu: '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

Proszę dodać wyjaśnienie, a nie tylko kod. Wyjaśnij, co robi. – MLavrentyev

Powiązane problemy