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

时间:2015-06-16 15:21:09

标签: python list list-comprehension

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

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

我收到错误:

ValueError:基数为10的int()的无效文字:'JFR'

我希望列表'代码'是:

[890,'JFR']

我的问题是如何在不收到错误的情况下仅将浮点数更改为int?

3 个答案:

答案 0 :(得分:9)

你应该试试 -

codes = [890.0,'JFR']
codes = [int(c) if isinstance(c, float) else c for c in codes]

答案 1 :(得分:2)

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

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']

答案 2 :(得分:1)

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

>>> converted
[890, 'JFR']