如何将元组中的一些项从列表转换为浮点数?

时间:2015-11-06 20:12:37

标签: python list tuples

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

(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个月期间的平均股票价格。

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

2 个答案:

答案 0 :(得分:8)

此函数返回一个浮点数,无论它是浮点数还是列表:

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 ]

答案 1 :(得分:-1)

如果要从列表中提取数字:

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)