我有一个看起来像这样的列表:
['1', '2', '3.4', '5.6', '7.8']
如何将前两个更改为 int
,将最后三个更改为 float
?
我希望我的列表看起来像这样:
[1, 2, 3.4, 5.6, 7.8]
最佳答案
使用 conditional inside a list comprehension
>>> s = ['1', '2', '3.4', '5.6', '7.8']
>>> [float(i) if '.' in i else int(i) for i in s]
[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]
使用 isdigit
是最好的,因为它处理了所有边缘情况(由 Steven 在 comment 中提到)
>>> s = ['1', '2', '3.4', '5.6', '7.8']
>>> [int(i) if i.isdigit() else float(i) for i in s]
[1, 2, 3.4, 5.6, 7.8, 100.0]
关于python - 将字符串列表转换为 int 或 float,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33130279/