将字符串和数字的列表转换为字符串和浮点数

use*_*399 5 python

说我有这样的列表:

a = ['hello','1','hi',2,'something','3'] 
Run Code Online (Sandbox Code Playgroud)

我想将列表中的数字转换为浮点数,同时保留字符串.

我写了这个:

for i in a:
    try:
        i = float(i)
    except ValueError:
        pass
Run Code Online (Sandbox Code Playgroud)

有没有更有效和更好的方法来做到这一点?

gec*_*cco 1

您正在更改变量的值i-> 数组的内容a不会更改!如果你想改变数组中的值,你应该像这样实现:

for index, value in enumerate(a):
    try :
        a[index] = float(value)
    except ValueError :
        pass
Run Code Online (Sandbox Code Playgroud)