以高效的方式使用格式化将元组列表连接起来

6
我有下列元组列表。
a = [(5, 2), (2, 4)]

我需要输出如下文本

(5,2) (2,4)

我已经尝试过

[",".join(str(i) for i in j) for j in a]

它提供以下列表:

['5,3', '2,4']

但是还没有找到一种有效的方法来获得所需的输出结果,而且它必须适用于大小不同的元组列表。


1
' '.join(map(repr, a)) - Jeff Mercado
4个回答

3
您可以使用以下类似的生成器表达式和str.join方法进行处理:

' '.join('(%s)' % ','.join(map(str, t)) for t in a)

这将返回一个包含以下内容的字符串:
(5,2) (2,4)

1
如果您只需要获取字符串输出,则:
  1. 转换为字符串
  2. 去除括号
请注意保留HTML标签。

str(a).strip("[]")

输出:'(5,2) (2,4)'

这个输出结果是 (5, 2) (2, 4),而不是 (5,2) (2,4)。 - A. Yu

0

就像这样试试。

join() 方法适用于字符串容器,因此我们使用 str() 函数将元组转换为字符串。

>>> text = " ".join(str(tup).replace(" ", '') for tup in a)
>>> text
'(5,2) (2,4)'
>>>
>>> print(text)
(5,2) (2,4)
>>>

如果需要逗号分隔

>>> text = ",".join(str(tup).replace(" ", '') for tup in a)
>>> 
>>> text
'(5,2),(2,4)'
>>> 

建议:最后,您可以将代码封装在一个函数get_list_as_str()中,并在需要获取元组列表作为字符串时多次调用它(这是代码可重用性的概念)。
>>> def get_list_as_str(a):
...     text = " ".join(str(tup).replace(" ", '') for tup in a)
...     return text
... 
>>> 
>>> a = [(1, 5, 6), (4,7, 8, 9), (4, 7)]
>>> text = get_list_as_str(a)
>>> print(text)
(1,5,6) (4,7,8,9) (4,7)
>>> 
>>> b = [(1,1), (4,7, 8), (3, 3, 2, 9, 10, 5 * 6)]
>>> text = get_list_as_str(b)
>>> print(text)
(1,1) (4,7,8) (3,3,2,9,10,30)
>>> 

就是这样。


我需要消除元组数字之间的空格,因此我需要另一种方法。 - A. Yu
明白了,请再检查一遍。 - hygull

0

我不确定这是否是最好的方法,但这肯定有帮助。

a = [(5, 2), (2, 4)]
(str(a)[1:-1]).replace("),",')')

输出:

'(5, 2) (2, 4)'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接