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

14 投票
8 回答
3660 浏览
提问于 2025-04-16 07:38

我写了一个Python函数,它会返回一个列表,比如说:

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

但是我想要的输出是一个字符串,这样我就可以把逗号换成其他字符,这样输出就会变成:

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

有没有简单的方法可以做到这一点呢?:) 感谢提前提供的任何建议

8 个回答

3

这段代码的意思是把一些数字组合成特定的格式,然后用空格把它们连接起来。

首先,第一行代码做的是:它创建了一个包含元组的列表,比如(1,1)、(2,2)和(3,3)。然后,它把每个元组里的两个数字转换成字符串,并用“@”符号连接起来,最后把这些连接好的字符串用空格分开。

第二行代码则是一个更通用的写法,适用于任何元组的列表。它的做法是:对每个元组里的每个数字都转换成字符串,然后用“@”符号连接这些字符串,最后再用空格把所有的结果连接在一起。

4

你可以通过使用 % 操作符结合列表推导式或生成器表达式,把元组转换成字符串,比如:

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

这样会返回一个字符串列表,像这样:

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

你可以把得到的字符串列表连接起来,形成最终的输出。这篇文章介绍了六种不同的方法,并对它们的优缺点进行了分析和比较。

18

这看起来像是一个由多个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。这个操作会为列表中的每个元组生成'数字@数字'这样的组合。这些组合之间会用空格(' ')连接起来。

当我刚开始学习Python的时候,join的用法让我觉得有点奇怪,不过文档对我帮助很大。

撰写回答