从列表中的元组中删除字符

3

我有一个元组列表,格式如下(由数据库查询生成):

[(280.73,), (281.359,), (280.630,)]

我希望将 () 和逗号删除,以达到以下效果,使其更易于转换为 JSON 格式。
[280.73,281.359,280.630]

什么是最简单的方法来完成这个?

可能是 在Python中连接列表的列表 的重复问题。 - JBernardo
@Johnsyweb 针对重复出现了上千次的问题(将列表展平),请参考以下翻译。 - JBernardo
@JBernardo:我认为原帖作者没有意识到那是问题(无意冒犯)。 - johnsyweb
@Johnsyweb 这是因为 OP 认为所有东西都是字符串... 但我怀疑他在提问之前是否查看了其他问题。 - JBernardo
是的,我确实查看了其他问题。我刚开始学习Python,并将其视为字符串,这就是为什么我想要去除字符的原因。现在我看到了单个元组。 - taylormade201
4个回答

6

给定一个由单个元素的元组组成的列表(我们称其为l(代表列表))。您想将其展开为元素列表。

可以使用列表推导式提取每个元组的第一个元素来完成任务:

>>> l = [(280.73,), (281.359,), (280.630,)]
>>> [t[0] for t in l]
[280.73000000000002, 281.35899999999998, 280.63]
>>> 

5
最简单的方法可能是通过列表推导式:
cleaned = [i[0] for i in [(280.73,), (281.359,), (280.630,)]]

谢谢。就是这样了。我看错了变量。我刚开始写Python,还不习惯元组。 - taylormade201

0

这些示例将适用于任意元素数量的元组。

>>> l = [(280.73,), (281.359,), (280.630,)]
>>> [ v for b in l for v in b ]
[280.73, 281.359, 280.63]
>>> from itertools import chain
>>> list(chain(*l))
[280.73, 281.359, 280.63]
>>> 

0

作为一种替代hack,你也可以这样做:

>>> stuff = [(280.73,), (281.359,), (280.630,)]
>>> sum(stuff, ())
(280.73, 281.359, 280.63)

要将它转换成列表,将其传递到list函数中:
>>> stuff = [(280.73,), (281.359,), (280.630,)]
>>> list(sum(stuff, ()))
[280.73, 281.359, 280.63]

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