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

如何将含字符串型浮点数的列表转整数,并用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 19:35:23