Python 将字符串列表转换为int或float

Python 将字符串列表转换为int或float,python,list,Python,List,我有一个类似以下内容的列表: ['1', '2', '3.4', '5.6', '7.8'] [1, 2, 3.4, 5.6, 7.8] 如何将前两个更改为int,最后三个更改为float 我希望我的列表如下所示: ['1', '2', '3.4', '5.6', '7.8'] [1, 2, 3.4, 5.6, 7.8] 使用 指数的有趣的边缘情况。您可以添加到条件 >>> s = ['1', '2', '3.4', '5.6', '7.8' , '1e2'] >

我有一个类似以下内容的列表:

['1', '2', '3.4', '5.6', '7.8']
[1, 2, 3.4, 5.6, 7.8]
如何将前两个更改为
int
,最后三个更改为
float

我希望我的列表如下所示:

['1', '2', '3.4', '5.6', '7.8']
[1, 2, 3.4, 5.6, 7.8]
使用

指数的有趣的边缘情况。您可以添加到条件

>>> s = ['1', '2', '3.4', '5.6', '7.8' , '1e2']
>>> [float(i) if '.' in i or 'e' in i else int(i) for i in s]
[1, 2, 3.4, 5.6, 7.8, 100.0]
使用是最好的,因为它可以处理所有的边缘情况(在a中提到)

使用辅助函数:

def int_or_float(s):
    try:
        return int(s)
    except ValueError:
        return float(s)
[int_or_float(el) for el in lst] 
然后使用列表理解应用函数:

def int_or_float(s):
    try:
        return int(s)
    except ValueError:
        return float(s)
[int_or_float(el) for el in lst] 
使用字符串的isdigit方法:

numbers = [int(s) if s.isdigit() else float(s) for s in numbers]
或使用地图:

numbers = map(lambda x: int(x) if x.isdigit() else float(x), numbers)
为什么不使用


应处理所有角落的案件。对于这个用例来说,它有点重,但是如果您希望处理列表中的字符串之类的任何数字,这就可以了。

如果您希望显示为相同的列表,请使用以下查询附加列表:

item = input("Enter your Item to the List: ")
shopList.append(int(item) if item.isdigit() else float(item))

在这里,当用户输入int值或float值时,它会将列表附加到shopList中并将这些值存储在其中。

因为
int(“1e2”)
不同的条件会解决聪玛的问题:
int(i)if i.isdigit()else float(i)
@CongMa:虽然这确实会在
int(“1e2”)
中失败,我认为这不值得投反对票。虽然值得一提,但我认为这超出了问题规范的范围。在Python代码中,LBYL必须被假定为具有否决权,直到被证明为具有否决权为止。@CongMa什么?那太可笑了。