提取一个2元素的元组并将其转换为String

时间:2016-04-23 13:28:49

标签: python string python-3.x tuples

所以我有一个像这样的随机单词列表:

[('Frenchy', 'INTENSE'), ('Frenchy', 'ComputerScienceFTW'), ('Frenchy', 'HelloMrGumby'), ('INTENSE', 'Frenchy'), ('INTENSE', 'ComputerScienceFTW'), ('INTENSE', 'HelloMrGumby'), ('ComputerScienceFTW', 'Frenchy'), ('ComputerScienceFTW', 'INTENSE'), ('ComputerScienceFTW', 'HelloMrGumby'), ('HelloMrGumby', 'Frenchy'), ('HelloMrGumby', 'INTENSE'), ('HelloMrGumby', 'ComputerScienceFTW')]

这是排列的产物。既然我已经拥有了这个,我希望将元组中的项目添加到一起:

[('Frenchy', 'INTENSE')] # Was this
'FrenchyINTENSE' # Now this

有没有办法优雅地做到这一点?

3 个答案:

答案 0 :(得分:3)

使用列表理解来加入它们;这对str.join() method来说最简单:

[''.join(t) for t in list_of_tuples]

但你也可以使用解包和直接连接:

[a + b for a, b in list_of_tuples]

str.join()方法的优势在于,它适用于任意长度的序列。

演示:

>>> list_of_tuples = [('Frenchy', 'INTENSE'), ('Frenchy', 'ComputerScienceFTW'), ('Frenchy', 'HelloMrGumby'), ('INTENSE', 'Frenchy'), ('INTENSE', 'ComputerScienceFTW'), ('INTENSE', 'HelloMrGumby'), ('ComputerScienceFTW', 'Frenchy'), ('ComputerScienceFTW', 'INTENSE'), ('ComputerScienceFTW', 'HelloMrGumby'), ('HelloMrGumby', 'Frenchy'), ('HelloMrGumby', 'INTENSE'), ('HelloMrGumby', 'ComputerScienceFTW')]
>>> [''.join(t) for t in list_of_tuples]
['FrenchyINTENSE', 'FrenchyComputerScienceFTW', 'FrenchyHelloMrGumby', 'INTENSEFrenchy', 'INTENSEComputerScienceFTW', 'INTENSEHelloMrGumby', 'ComputerScienceFTWFrenchy', 'ComputerScienceFTWINTENSE', 'ComputerScienceFTWHelloMrGumby', 'HelloMrGumbyFrenchy', 'HelloMrGumbyINTENSE', 'HelloMrGumbyComputerScienceFTW']
>>> [a + b for a, b in list_of_tuples]
['FrenchyINTENSE', 'FrenchyComputerScienceFTW', 'FrenchyHelloMrGumby', 'INTENSEFrenchy', 'INTENSEComputerScienceFTW', 'INTENSEHelloMrGumby', 'ComputerScienceFTWFrenchy', 'ComputerScienceFTWINTENSE', 'ComputerScienceFTWHelloMrGumby', 'HelloMrGumbyFrenchy', 'HelloMrGumbyINTENSE', 'HelloMrGumbyComputerScienceFTW']

答案 1 :(得分:2)

使用列表comprehesion。解压每个字符串元组并将字符串添加到一起。

>>> lst = [('Frenchy', 'INTENSE'), ('Frenchy', 'ComputerScienceFTW')]
>>> [a+b for a,b in lst]
['FrenchyINTENSE', 'FrenchyComputerScienceFTW']

答案 2 :(得分:2)

对于更大的迭代(以及内存有效使用),您可能希望使用itertools模块中的某些内容,例如starmap函数:

import itertools

tuples = [('Frenchy', 'INTENSE'), ('Frenchy', 'ComputerScienceFTW'),]

result = itertools.starmap(lambda a, b: a + b, tuples)

当然,这也是一种优雅的方式。