【问题标题】:Stripping characters from tuples in a list从列表中的元组中剥离字符
【发布时间】:2011-12-03 19:37:28
【问题描述】:

我有一个这种形式的元组列表(由数据库查询生成):

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

我想去掉 () 和逗号来实现这样的效果,使其更兼容形成 JSON。

[280.73,281.359,280.630]

最简单的方法是什么?

【问题讨论】:

  • @Johnsyweb 重复数千次完全相同的问题(展平列表)。
  • @JBernardo:我认为 OP 没有意识到这是问题所在(无意不尊重)。
  • @Johnsyweb 那是因为 OP 认为一切都是字符串......但我怀疑他在询问之前检查了其他问题
  • 是的,我确实检查了其他问题。我刚开始使用 Python,我确实把它看作一个字符串,这就是为什么我想去掉字符。我现在看到了单个元组。

标签: python json list tuples


【解决方案1】:

作为一种替代方法,您也可以这样做:

>>> 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]

【讨论】:

    【解决方案2】:

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

    >>> 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]
    >>> 
    

    【讨论】:

      【解决方案3】:

      最简单的可能是通过列表理解:

      cleaned = [i[0] for i in [(280.73,), (281.359,), (280.630,)]]
      

      【讨论】:

      • 谢谢。就是这样。我在看变量错误。我刚开始用 Python 写,还不习惯元组。
      【解决方案4】:

      给定一个list单元素 tuples(我们称之为l(对于list))。您想将其展平为元素列表。

      列表推导式,提取每个元组的第一个元素就可以了:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-12-20
        • 1970-01-01
        • 2020-07-24
        • 2020-10-29
        • 1970-01-01
        • 2018-04-20
        • 2021-03-09
        相关资源
        最近更新 更多