如何将列表中整数值的浮点数选择性转换为整数并提取?
解决整数值浮点数的筛选与转换问题
你的代码问题在于:type(item) == int是判断元素的类型是否为整数,但像4.0这类值本质还是float类型,所以无法被筛选出来。以下是几种可行的解决方案:
方法一:列表推导式(推荐)
利用浮点数的is_integer()方法判断其是否为整数值,同时完成类型转换:
list1 = [1.8, 4.0, 3.2, 12.9, 18.0, 6.0, 7.6, 9.0] list2 = [int(item) for item in list1 if item.is_integer()] print(list2) # 输出: [4, 18, 6, 9]
方法二:filter + map组合
和你最初的思路适配,先筛选符合条件的元素,再转换类型:
list1 = [1.8, 4.0, 3.2, 12.9, 18.0, 6.0, 7.6, 9.0] # 先筛选出整数值的浮点数,再转为整数 list2 = list(map(int, filter(lambda x: x.is_integer(), list1))) print(list2)
方法三:值相等判断(需注意精度)
通过判断浮点数与其整数形式的值是否相等来筛选,适合常规场景:
list1 = [1.8, 4.0, 3.2, 12.9, 18.0, 6.0, 7.6, 9.0] list2 = [int(item) for item in list1 if item == int(item)] print(list2)
注意:如果处理超大浮点数,可能存在精度误差导致
item == int(item)判断失效,此时优先使用is_integer()方法。
内容的提问来源于stack exchange,提问作者Wesley Chan
相关产品推荐
相关产品推荐

