2009-12-15 3 views

ответ

50

возвращения массива в строку

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

возвращение массива как целое

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

+1 для функции отображения – Ikke

+4

В Python3, что будет 'список (карта (интермедиат, ул (12345)))' –

1

Струны так же итерацию как массивы, так что просто преобразовать его в строку:

str(12345) 
+0

ОП хочет '' int's не str'ings – jamylak

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

+0

@nd вы можете поместить базу числа внутри int, как int (i, 2) для двоичной записи, см. мой пост – fabrizioM

2

как говорит @nd, но с использованием встроенной функции междунар преобразовать в другой базе

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

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

Так как знать, если мы можем сделать выше, более эффективно.

Смежные вопросы