如何将含字符串型浮点数的列表转整数,并用statistics.median计算中位数
问题:字符串混合整数/浮点数列表的中位数计算
拥有包含字符串形式整数和浮点数的列表,希望使用Python的
statistics.median()函数计算中位数,但转换元素为数值类型时遇到困难:直接用int()会触发ValueError: invalid literal for int() with base 10错误,尝试用str()处理后又无法通过float()转换,寻求简单解决办法。
错误代码示例:
import statistics import numpy as np data = ['3900000.00', '140000000.00', '150000000.00', ...] datas = ["5", "6" , "11", "1", "21", "5", "5", "5", "5", "1.00", "3.00", "5.00"] # print([int(datas) for datas in datas]) # 直接转int会报错 print(int(str(datas))) # 错误的处理方式
解决思路与代码
核心逻辑是先统一将所有字符串元素转为float类型(兼容整数和小数格式的字符串),再计算中位数,按需转换为整数。
正确实现代码
import statistics # 示例数据 datas = ["5", "6" , "11", "1", "21", "5", "5", "5", "5", "1.00", "3.00", "5.00"] data = ['3900000.00', '140000000.00', '150000000.00'] # 处理datas列表 numeric_datas = [float(item) for item in datas] median_datas = statistics.median(numeric_datas) # 若中位数为整数,转为int类型 if median_datas.is_integer(): median_datas = int(median_datas) print("datas的中位数:", median_datas) # 输出:5 # 处理data列表 numeric_data = [float(item) for item in data] median_data = statistics.median(numeric_data) if median_data.is_integer(): median_data = int(median_data) print("data的中位数:", median_data) # 输出:140000000
关键说明
float(item)可以无缝处理"5"(整数格式字符串)和"1.00"(小数格式字符串),不会触发转换错误statistics.median()支持浮点数列表的中位数计算- 通过
is_integer()判断中位数是否为整数,按需转换为int,保证结果符合预期
内容的提问来源于stack exchange,提问作者Bouncyknights123
相关产品推荐
相关产品推荐

