Какой лучший способ преобразовать массив целых в строку? - PullRequest
2 голосов
/ 04 февраля 2012

Я хотел бы преобразовать массив int (например, [1, 1, 2, 1]) в строку ("1121").

Какой самый лучший (самый питонический) способ сделать это?

Я всегда мог сделать что-то подобное, затем убрать лишние скобки:

>>> str([1, 2, 1, 1])
'[1, 2, 1, 1]'

или я могу сделать что-то вроде этого:

s = ""
for i in [1, 2, 1, 1]:
    s += s(i)

Но оба метода кажутся немного шаткими. Есть ли лучший способ сделать это?

Кстати, мне, естественно, интересны все версии Python, но я работаю над py2.7 и предпочел бы ответы, которые работают с этой версией.

Ответы [ 4 ]

5 голосов
/ 04 февраля 2012

Генераторное выражение:

"".join(str(i) for i in l)

PS: ваш "массив" - это действительно список.

5 голосов
/ 04 февраля 2012

Попробуйте:

l = [1, 2, 1, 1]
s = ''.join(map(str, l))
print(s)

Здесь map(str, l) преобразует l в список строк, а ''.join(...) объединяет строки.

4 голосов
/ 04 февраля 2012

Попробуйте это:

lst = [1, 2, 1, 1]
''.join(str(x) for x in lst)

Это эффективно, поскольку не создает промежуточный список (как это делает map), вместо этого список просматривается с помощью итераторов.

0 голосов
/ 05 февраля 2012

Это просто для развлечения, поскольку оно работает только тогда, когда каждый элемент списка представляет собой однозначное целое число:

lst = [1, 1, 0, 1]

def convert_to_str():
    new_num = 0
    for i in xrange(len(lst)):
        new_num += lst[i]*(10**(len(lst)-1-i))
    return str(new_num) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...