2015-11-06 92 views
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]) 

在上面的例子中前7项是花车,其余是包含每一个元素列表,这也是漂浮物。

我想摆脱清单,并保持浮动,所以我可以加起来所有的价值来计算6个月期间的平均股票价格。

什么是达到这个最pythonic方式?

+0

你想再次结束了一个元组?或者你想要一个列表? –

+0

我想保留元组。 –

回答

8

这个函数返回一个float它是否给出一个浮动或列表:

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

如果您需要的输出是一个元组,你可以用它喜欢:

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

或者,如果列表也行,最Python的是一个列表理解:

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) 
+0

使用'type'函数进行类型检查并不可靠。你应该使用'isinstance'来代替。 –

+0

@ScottHunter yup - 显然OP想要从列表中提取数字。 – xnx

相关问题