Python:要浮动的List或float或数组

时间:2016-06-13 18:53:30

标签: python type-conversion

我有一个函数需要输入float类型才能进一步计算。 不幸的是,输入类型的范围是:

  1. list
  2. float
  3. numpy.array
  4. 我对我的解决方法不满意,我想知道是否有更好的解决方案。

    def get_correct_float(x):
        try:
            if len(x) == 1:
                return x[0]
        except:
            return x      
    
    a = [.5]
    b = .5
    c = np.array([.5])
    
    get_correct_float(a) == get_correct_float(b) == get_correct_float(c)
    TRUE
    get_correct_float(a)
    0.5
    

1 个答案:

答案 0 :(得分:2)

使用isinstance

>>> import numpy as np
>>> l = [[.5], .5, np.array([.5])] 
>>> f = [x if isinstance(x, float) else x[0] for x in l]
>>> f
[0.5, 0.5, 0.5]
def get_correct_float(x):
    return x if isinstance(x, float) else x[0]

以前的回答,

import numpy as np

def get_correct_float(x):
    if isinstance(x, list):
        return x[0]
    elif isinstance(x, np.ndarray):
        return x[0]
    else:
        return x