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

Python 如何将元组中的某些项从列表转换为浮点?,python,list,tuples,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个月内的平均股价 实现这一点的最佳方法是什么?如果要从列表中提取数字: In [1]: t = (0.0,

由于我之前在脚本中进行了一些切片,我最终得到了一个巨大的元组,如下所示:

(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个月内的平均股价


实现这一点的最佳方法是什么?

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

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)
如果您想“摆脱”列表:

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)

此函数返回一个浮点值,无论给定的是浮点值还是列表:

def delistify(x):
    try:
        return x[0]
    except TypeError:
        return x
如果需要将输出设置为元组,可以使用如下方式:

print tuple( delistify(x) for x in my_list )
或者,如果列表也可以,那么最具吸引力的是列表理解:

print [ delistify(x) for x in my_list ]

你想再得到一个元组吗?还是要列表?我想保留元组。使用
Type
函数进行类型检查不可靠。您应该改用
isinstance
。@ScottHunter是的——显然OP想从列表中提取数字。