次のようなタプルのリストがあります。
[('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']
リストが次のとおりであると仮定します。
リスト内包表記 + 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 .']