python将列表中的字符串转换为int和float

2024-04-23 16:59:44 发布

您现在位置:Python中文网/ 问答频道 /正文

如果我有以下清单:

lst = ['3', '7', 'foo', '2.6', 'bar', '8.9']

如何将所有可能的项相应地转换为int或float,以获得

lst = [3, 7, 'foo', 2.6, 'bar', 8.9]

提前谢谢。你知道吗


Tags: foobarfloatintlst
2条回答

尝试以下操作:

lst = ['3', '7', 'foo', '2.6', 'bar', '8.9']

for j,i in enumerate(lst):
    if i.isdigit():
        lst[j]=int(i)
    elif '.' in i:
        lst[j]=float(i)

输出:

[3, 7, 'foo', 2.6, 'bar', 8.9]

循环每个项目并尝试转换。如果转换失败,那么你知道它是不可转换的。你知道吗

def tryconvert(s):
    try:
        return int(s)
    except ValueError:
        try:
            return float(s)
        except ValueError:
            return s

lst = ['3', '7', 'foo', '2.6', 'bar', '8.9']
newlst = [tryconvert(i) for i in lst]
print(newlst)

输出:

[3, 7, 'foo', 2.6, 'bar', 8.9]

相关问题 更多 >