【问题标题】:How to convert some items in a tuple from list to float?如何将元组中的某些项目从列表转换为浮动?
【发布时间】:2015-11-06 20:12:36
【问题描述】:

由于我之前在脚本中进行了一些切片,我最终得到了一个看起来像这样的巨大元组:

(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, [102.37], [129.6], [190.64], [181.98], [192.79])

在上面的示例中,前 7 个项目是浮点数,其他是每个包含一个元素的列表,它们也是浮点数。

我想摆脱列表并保留浮动,以便我可以将所有值相加以计算 6 个月期间的平均股价。

实现这一目标的最 Pythonic 方式是什么?

【问题讨论】:

  • 你想再次得到一个元组吗?还是要一份清单?
  • 我想保留元组。

标签: python list tuples


【解决方案1】:

无论给定一个浮点数还是一个列表,这个函数都会返回一个浮点数:

def delistify(x):
    try:
        return x[0]
    except TypeError:
        return x

如果你需要输出是一个元组,你可以像这样使用它:

print tuple( delistify(x) for x in my_list )

或者,如果列表也可以,最pythonic的是列表理解:

print [ delistify(x) for x in my_list ]

【讨论】:

    【解决方案2】:

    如果你想从列表中提取数字:

    In [1]: t = (0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, [102.37], [129.6], [190.64], [181.98], [192.79])
    In [2]: tuple(tt if isinstance(tt, float) else tt[0] for tt in t)
    Out[2]: (0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 102.37, 129.6, 190.64, 181.98, 192.79)
    

    如果你想“摆脱”列表:

    In [3]: tuple(tt for tt in t if isinstance(tt, float))
    Out[3]: (0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)
    

    【讨论】:

    • 使用type 函数的类型检查不可靠。你应该改用isinstance
    • @ScottHunter 是的——显然 OP 想要从列表中提取数字。
    猜你喜欢
    • 2018-10-02
    • 2018-06-10
    • 2017-01-22
    • 1970-01-01
    • 2016-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多