Python - 将元组列表转换为字符串列表

时间:2012-07-27 21:48:19

标签: python

我有一个看起来像这样的元组列表:

[('this', 'is'), ('is', 'the'), ('the', 'first'), ('first', 'document'), ('document', '.')]

将每个标记用空格分隔的最灵活,最有效的方法是什么:

['this is', 'is the', 'the first', 'first document', 'document .']

4 个答案:

答案 0 :(得分:13)

很简单:

[ "%s %s" % x for x in l ]

答案 1 :(得分:8)

使用map()join()

tuple_list = [('this', 'is'), ('is', 'the'), ('the', 'first'), ('first', 'document'), ('document', '.')]

string_list = map(' '.join, tuple_list) 

正如督察G4dget所指出的那样,列表推导是这种方式最为诡计多端的方式:

string_list = [' '.join(item) for item in tuple_list]

答案 2 :(得分:2)

这样做:

>>> l=[('this', 'is'), ('is', 'the'), ('the', 'first'), 
('first', 'document'), ('document', '.')]
>>> ['{} {}'.format(x,y) for x,y in l]
['this is', 'is the', 'the first', 'first document', 'document .']

如果你的元组长度可变(或不均匀),你也可以这样做:

>>> [('{} '*len(t)).format(*t).strip() for t in [('1',),('1','2'),('1','2','3')]]
['1', '1 2', '1 2 3']   #etc

或者,可能还是最好的:

>>> [' '.join(t) for t in [('1',),('1','2'),('1','2','3'),('1','2','3','4')]]
['1', '1 2', '1 2 3', '1 2 3 4']

答案 3 :(得分:2)

我强烈建议您避免使用 %s。从 Python 3.6 开始,添加了 f-strings,因此您可以按如下方式利用此功能:

[f'{" ".join(e)}' for e in l]

如果您使用的是 Python 3.6 的早期版本,您还可以通过使用 %s 函数来避免使用 format,如下所示:

print(['{joined}'.format(joined=' '.join(e)) for e in l]) # before Python 3.6

替代方案:

假设每个元组中有 2 个元素,您可以使用以下内容:

# Python 3.6+
[f'{first} {second}' for first, second in l]

# Before Python 3.6
['{first} {second}'.format(first=first, second=second) for first, second in l]