如何在Python中将字符串列表转换为混合数值类型列表?
解决字符串数字列表的混合类型转换问题
你可以通过先将每个字符串转换为float,再判断该值是否为整数(即小数部分为0),如果是则转为int,否则保留float的方式实现需求。
方法一:列表推导式实现
li = ['1', '4', '8.6'] result = [int(float(num)) if float(num).is_integer() else float(num) for num in li] print(result) # 输出: [1, 4, 8.6]
方法二:自定义函数配合map实现
def convert_num(num_str): num_float = float(num_str) return int(num_float) if num_float.is_integer() else num_float li = ['1', '4', '8.6'] result = list(map(convert_num, li)) print(result) # 输出: [1, 4, 8.6]
逻辑说明
- 先统一转成
float是为了兼容整数和小数格式的字符串; - 利用
float类型的is_integer()方法判断数值是否为整数(比如1.0.is_integer()返回True,8.6.is_integer()返回False); - 通过条件判断实现整数字符串转
int、小数字符串转float的混合转换。
内容的提问来源于stack exchange,提问作者kabil
相关产品推荐
相关产品推荐

