繁体   English   中英

将元组列表转换为Python字符串

[英]Converting lists of tuples to strings Python

我在python中编写了一个函数,例如返回一个列表

[(1,1),(2,2),(3,3)] 

但我希望输出为一个字符串,所以我可以用另一个char替换逗号,所以输出将是

'1@1' '2@2' '3@3' 

有什么简单的方法吗?:)感谢提前的任何提示

这看起来像tuple list ,其中每个tuple有两个元素。

' '.join(['%d@%d' % (t[0],t[1]) for t in l])

当然可以简化为:

' '.join(['%d@%d' % t for t in l])

甚至:

' '.join(map(lambda t: '%d@%d' % t, l))

其中l是您的原始list 这会为列表中的每个元组生成“number @ number”对。 然后将这些对与空格( ' ' )连接起来。

当我第一次开始使用Python时, join语法看起来有点奇怪,但文档是一个巨大的帮助。

您可以使用带有列表推导或生成器表达式的%运算符将元组转换为字符串,例如

ll = [(1,1), (2,2), (3,3)]
['%d@%d' % aa for aa in ll]

这将返回一个字符串列表,如:

['1@1', '2@2', '3@3']

您可以将生成的字符串列表连接在一起以进行输出。 本文介绍了六种不同的方法,包括基准和分析它们的相对优点。

' '.join([str(a)+"@"+str(b) for (a,b) in [(1,1),(2,2),(3,3)]])

或者对于列表中的任意元组,

' '.join(['@'.join([str(v) for v in k]) for k in [(1,1),(2,2),(3,3)]])

In [1]: ' '.join('%d@%d' % (el[0], el[1]) for el in [(1,1),(2,2),(3,3)])
Out[1]: '1@1 2@2 3@3'
[ str(e[0]) + ',' + str(e[1]) for e in [(1,1), (2,2), (3,3)] ]

这是如果你想要它们在一个字符串集合中,如果你想要一个输出字符串或一个集合,我不明白它。

你只需要生成器理解中的joinstr

>>> ['@'.join(str(i) for i in t) for t in l]
['1@1', '2@2', '3@3']

>>> ' '.join('@'.join(str(i) for i in t) for t in l)
'1@1 2@2 3@3'

你可以使用repr函数,然后只需替换字符串的位:

>>> original = [(1,1),(2,2),(3,3)]
>>> intermediate = repr(original)
>>> print intermediate
[(1, 1), (2, 2), (3, 3)]
>>> final = intermediate.replace('), (', ' ').replace('[(','').replace(')]','').replace(', ','@')
>>> print final
1@1 2@2 3@3

但这只有在你确定没有元组具有以下必须在最终结果中保留的字符序列时才有效: ), ([()] ,

[str(item).replace(',','@') for item in [(1,1),(2,2),(3,3)]]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM