将元组转换为字符串时出现问题

时间:2014-08-14 07:55:49

标签: python

我对python了解不多,所以请耐心等待我:

假设我们有一个具有这种形式的元组:

 locations = [('John' , 32 , 21) , ('Michael' , 23 , 12)]

如何将它们连接到看起来像

的字符串

“John 32 21

Michael 23 12“

我试过这样做:

str1 = '\n'.join( ' '.join(elem[0] elem [1] elem[2]) for elem in locations)

但我在elem [0],[1],[2]上收到错误,说语法无效

关于如何解决此问题的任何想法?

4 个答案:

答案 0 :(得分:5)

>>> '\n'.join(' '.join(str(y) for y in x) for x in locations)
'John 32 21\nMichael 23 12'

答案 1 :(得分:2)

[edit]或试试这个

>>> '\n'.join([' '.join(map(lambda c: str(c), elem)) for elem in locations])
>>> 'John 32 21\nMichael 23 12'

map(lambda c:str(c),elem)从位置获取每个元素,即从('John',32,21)'John',32和21获取并转换为字符串并返回['John',' 32','21']然后用''连接,最后用'\ n'连接

更新:

>>> '\n'.join([' '.join(map(str, elem)) for elem in locations])

学会了,谢谢

答案 2 :(得分:1)

你可以这样做:

>>>['%s %s %s' %i for i in locations]
['John 32 21', 'Michael 23 12']

换行:

>>>print '\n'.join(['%s %s %s' %i for i in locations])
John 32 21 
Michael 23 12 

答案 3 :(得分:1)

您自己的代码需要将每个元素用逗号分隔,并将三个元素包装在容器中:

 ' '.join(elem[0] elem [1] elem[2]) # invalid syntax, join takes a single iterable

'\n'.join( ' '.join((str(elem[0]), str(elem[1]) ,str(elem[2]))) for elem in locations)

你可以使用解包和map来做同样的事情:

'\n'.join( ' '.join(map(str,(a,b,c))) for a,b,c in locations)

或者简单地说:

 '\n'.join( ' '.join(map(str,elem)) for elem in locations)