我在python中编写了一个返回列表的函数,例如
[(1,1),(2,2),(3,3)]
但我希望输出为字符串,所以我可以用另一个char替换逗号,所以输出将是
'1@1' '2@2' '3@3'
有什么简单的方法吗?:) 感谢提前提示
答案 0 :(得分:18)
这看起来像list
个tuple
,其中每个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
语法看起来有些奇怪,但the documentation是一个巨大的帮助。
答案 1 :(得分:4)
您可以使用带有列表推导或生成器表达式的%运算符将元组转换为字符串,例如
ll = [(1,1), (2,2), (3,3)]
['%d@%d' % aa for aa in ll]
这将返回一个字符串列表,如:
['1@1', '2@2', '3@3']
您可以将生成的字符串列表连接在一起以进行输出。 This article描述了六种不同的方法,包括基准和分析它们的相对优点。
答案 2 :(得分: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)]])
答案 3 :(得分:2)
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'
答案 4 :(得分:1)
[ str(e[0]) + ',' + str(e[1]) for e in [(1,1), (2,2), (3,3)] ]
如果你想要它们在一个字符串集合中,如果你想要一个输出字符串或一个集合,我就不明白它。
答案 5 :(得分:0)
[str(item).replace(',','@') for item in [(1,1),(2,2),(3,3)]]
答案 6 :(得分:0)
" ".join(map(lambda el:"%d@%d" % el, [(1,1), (2,2), (3,3)]))
答案 7 :(得分:0)
在生成器理解中,您只需要join
和str
。
>>> ['@'.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'
答案 8 :(得分:0)
您可以使用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
但这只有在您确定没有元组具有以下必须在最终结果中保留的字符序列时才有效:), (
,[(
,)]
, ,