我试图将列表'codes'中的任何浮点数转换为int。
codes = [890.0,'JFR']
codes = [int(c) for c in codes]
我收到错误:
ValueError:基数为10的int()的无效文字:'JFR'
我希望列表'代码'是:
[890,'JFR']
我的问题是如何在不收到错误的情况下仅将浮点数更改为int?
答案 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']