2016-03-08 3 views
0

Я хотел преобразовать целое число кортежа в строку кортежа. Например:Преобразование целого числа кортежа в строку кортежа

data = [(2,3,4,...),(23,42,54,...),......] 

приведет:

d = [('2','3','4',...),('23','42','54',....)......] 

Пожалуйста, обратите внимание, как кортеж большой и список также большой.

Я попытался код ниже, но это не дает мне результат, который я искал:

data = [(2,3,4,...),(23,42,54,...),......] 

d=[] 
for t in data: 
    d.append(str(t)) 

ответ

5

Это приближается:

data = [[str(x) for x in tup] for tup in data] 

Если вы на самом деле потребность кортежи:

data = [tuple(str(x) for x in tup) for tup in data] 

Или, если вы предпочитаете более «функциональный» подход:

data = [tuple(map(str, tup)) for tup in data] 

Хотя, кажется, что map упал в немилость питона толпы (или, может быть, он никогда не был на самом деле в пользу ;-).

+0

Большое вам спасибо за вашу помощь. Ты замечательный. Я отвечу на этот ответ через 6 минут. – Sam

0

Это будет рекурсивно конвертировать бесконечно вложенные списки и кортежи:

def stringify(something): 
    if type(something) == list: 
     return [stringify(x) for x in something] 
    elif type(something) == tuple: 
     return tuple(stringify(list(something))) 
    else: 
     return str(something) 
+2

Осторожно подбрасывая термин «бесконечно». Вы достигнете предела рекурсии _sometime_, по крайней мере, в большинстве реализаций python. Я не уверен в том, что у меня нет стека. , , Хм. , , :-) – mgilson

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