我对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]上收到错误,说语法无效
关于如何解决此问题的任何想法?
答案 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)