You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在保留列表顺序的同时将末尾为.0的浮点数转为整数?

解决列表中.0结尾浮点数转整数的需求

没问题,这个需求很容易实现,我给你两种方案,既保证转换准确,又能维持原列表的顺序:

方案一:简洁的列表推导式(推荐)

一行代码就能搞定,用Python内置的is_integer()方法来判断浮点数是否为整数(也就是末尾是.0的情况),这个方法比字符串判断更可靠,不会因为浮点数的底层表示问题出错:

original_list = [1.0, 3.0, 1.0, 1.43, 1.0, 8.0, 4.0, 8.98, 2.0, 2.0, 2.0, 5.0, 7.0, 72.0, 3.0, 3.0, 3.0, 7.0, 9.0, 9.0, 4.0, 4.0, 4.0, 4.0, 8.7, 43.0, 5.89, 5.0, 5.0, 5.0, 322.0, 7.0, 6.0, 6.0, 6.0, 102.0]
processed_list = [int(num) if num.is_integer() else num for num in original_list]

运行后得到的结果完全符合你的预期:

[1, 3, 1, 1.43, 1, 8, 4, 8.98, 2, 2, 2, 5, 7, 72, 3, 3, 3, 7, 9, 9, 4, 4, 4, 4, 8.7, 43, 5.89, 5, 5, 5, 322, 7, 6, 6, 6, 102]

方案二:直观的for循环写法

如果刚接触Python,觉得列表推导式有点抽象,可以用普通循环来实现,逻辑和上面完全一致:

original_list = [1.0, 3.0, 1.0, 1.43, 1.0, 8.0, 4.0, 8.98, 2.0, 2.0, 2.0, 5.0, 7.0, 72.0, 3.0, 3.0, 3.0, 7.0, 9.0, 9.0, 4.0, 4.0, 4.0, 4.0, 8.7, 43.0, 5.89, 5.0, 5.0, 5.0, 322.0, 7.0, 6.0, 6.0, 6.0, 102.0]
processed_list = []
for num in original_list:
    # 判断当前浮点数是否为整数(即末尾是.0)
    if num.is_integer():
        processed_list.append(int(num))
    else:
        processed_list.append(num)

补充说明

为什么不用字符串判断?比如str(num).endswith('.0')?
因为某些浮点数可能因为精度问题,显示出来不是.0但实际是整数(比如10.0可能在某些情况下被表示为9.999999999999998),而is_integer()方法会准确判断数值本身是否为整数,避免这类问题。

内容的提问来源于stack exchange,提问作者user12369128

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 08:43:11