我有一个看起来像这样的元组列表:
[('this', 'is'), ('is', 'the'), ('the', 'first'), ('first', 'document'), ('document', '.')]
将每个标记用空格分隔的最pythonic和最有效的方法是什么:
['this is', 'is the', 'the first', 'first document', 'document .']
我有一个看起来像这样的元组列表:
[('this', 'is'), ('is', 'the'), ('the', 'first'), ('first', 'document'), ('document', '.')]
将每个标记用空格分隔的最pythonic和最有效的方法是什么:
['this is', 'is the', 'the first', 'first document', 'document .']
非常简单:
[ "%s %s" % x for x in l ]
使用map()
和join()
:
tuple_list = [('this', 'is'), ('is', 'the'), ('the', 'first'), ('first', 'document'), ('document', '.')]
string_list = map(' '.join, tuple_list)
正如inspectorG4dget 指出的那样,列表推导是最 Pythonic 的方式:
string_list = [' '.join(item) for item in tuple_list]
这样做:
>>> 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']
我强烈建议您避免使用%s
. 从 Python 3.6 开始,添加了f 字符串,因此您可以按如下方式利用此功能:
[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]
假设列表是:
您可以使用列表理解 + join()
li = [('this', 'is'), ('is', 'the'), ('the', 'first'), ('first', 'document'), ('document', '.')]
您需要做的就是:
[' '.join(x) for x in li]
您也可以使用map() + join()
list(map(' '.join, li))
结果 :
['this is', 'is the', 'the first', 'first document', 'document .']