2014-12-31 4 views
3

У меня есть список кортежей, где все символы в кортежах являются строками. Это может выглядеть следующим образом:Как преобразовать список кортежей в одну строку

my_list = [('a', 'b', 'c'), ('d', 'e')] 

Я хочу, чтобы преобразовать его в строку, так что это будет выглядеть как «A B C D E». Я могу использовать '.join (...), но я не уверен, какой аргумент я должен использовать.

ответ

5

Вы можете придавить список, а затем использовать присоединиться:

>>> import itertools 
>>> ' '.join(itertools.chain(*my_list)) 
'a b c d e' 

или список понимания:

>>> ' '.join([i for sub in my_list for i in sub]) 
'a b c d e' 
1

Вы можете использовать список понимание, которое будет выполнять итерацию над кортежами, а затем итерацию по каждой кортеж, возвращая элемент для соединения.

my_list = [('a', 'b', 'c'), ('d', 'e')] 

s = ' '.join([item for tup in my_list for item in tup]) 

Список понимание эквивалентно:

a = [] 
for tup in my_list: 
    for item in tup: 
     a.append(item) 
0
my_list = [('a', 'b', 'c'), ('d', 'e')] 
print "".join(["".join(list(x)) for x in my_list]) 

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

+1

Преобразование кортежа в список в внутреннее соединение в не требуется. –

2
>>> my_list = [('a', 'b', 'c'), ('d', 'e')] 
>>> ' '.join(' '.join(i) for i in my_list) 
'a b c d e' 
+0

При использовании 'str.join' вы должны использовать понимание списка, а не выражение генератора. См. [Этот ответ] (http://stackoverflow.com/a/9061024/3005188). – Ffisegydd

1
my_list = [('a', 'b', 'c'), ('d', 'e')] 

L = [] 

for x in my_list: 
    L.extend(x) 

print ' '.join(L) 


output: 
'a b c d e' 
0

Список понимание является лучшим решением один лайнер на свой вопрос: -

my_list = [('a', 'b', 'c'), ('d', 'e')] 
s = ' '.join([elem for item in my_list for elem in item])