Python-如何仅将混合列表中的数字转换为浮点数?

Fab*_*ien -1 python dictionary list python-3.x

我正在尝试学习Python,但遇到了问题,因此,如果我遇到类似问题:

data_l = ['data', '18.8', '17.9', '0.0']
Run Code Online (Sandbox Code Playgroud)

我该怎么做?

data_l = ['data', 18.8, 18.9, 0.0]
Run Code Online (Sandbox Code Playgroud)

Ilj*_*ilä 5

您可以创建一个简单的实用程序函数,该函数可以将给定值转换为浮点数,或者可以按原样返回:

def maybe_float(s):
    try:
        return float(s)
    except (ValueError, TypeError):
        return s

orig_list = ['data', '18', '17', '0']
the_list = [maybe_float(v) for v in orig_list]
Run Code Online (Sandbox Code Playgroud)

并且请不要将内置函数的名称和类型(如list等)用作变量名。


由于您的数据实际上具有结构,而不是真正的字符串和数字的混合列表,因此看起来4元组(str, float, float, float)更合适:

data_conv = (data_l[0], *(float(v) for v in data_l[1:]))
Run Code Online (Sandbox Code Playgroud)

或旧版Python

# You could also just convert each float separately since there are so few
data_conv = tuple([data_l[0]] + [float(v) for v in data_l[1:]]) 
Run Code Online (Sandbox Code Playgroud)