仅将列表中的浮点数转换为 int python

Convert only floating point numbers to int in list python

我正在尝试将列表 'codes' 中的任何浮点数转换为 int。

codes = [890.0,'JFR']
codes = [int(c) for c in codes]

我遇到错误:

ValueError:以 10 为底的 int() 无效文字:'JFR'

我希望列表 'codes' 是:

[890,'JFR']

我的问题是如何只将浮点数更改为 int 而不会出现错误?

您可以创建一个尝试转换为 int 的函数,如果不成功,returns 原始值

def convert_to_int(x):
    try:
        return int(x)
    except ValueError:
        return x

然后为列表中的每个元素调用此函数。

>>> codes = [890.0,'JFR']
>>> [convert_to_int(i) for i in codes]
[890, 'JFR']

你应该试试 -

codes = [890.0,'JFR']
codes = [int(c) if isinstance(c, float) else c for c in codes]
>>> conversions = [int, str]
>>> codes = [890.0, 'JFR']
>>> converted = [conversion(code)
                 for conversion, code in zip(conversions, codes)]

>>> converted
[890, 'JFR']