仅将列表中的浮点数转换为 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']
我正在尝试将列表 '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']