如何将混合字符串列表转整数浮点数并按类型分入不同列表?
处理字符串形式整数与浮点数的混合列表并分类存储
你的需求是把混合了字符串形式整数(如'2')和浮点数(如'3.5')的列表,转换为对应数值类型后分别存入整数列表和浮点数列表,但你提供的代码无法实现这一点——因为输入列表的所有元素都是字符串类型,type(x)==int永远为False,最终所有元素都会被分到浮点数列表里。
下面是两种可行的解决方案:
方法1:通过try-except捕获转换异常
优先尝试将字符串转为整数,成功则存入整数列表;转换失败时,再转为浮点数存入浮点数列表:
def separate_float_int(input_list): integers = [] floats = [] for s in input_list: try: num = int(s) integers.append(num) except ValueError: num = float(s) floats.append(num) return integers, floats L = ['2', '3.5', '6', '5.1', '9.8', '7.8', '5', '3.3', '0.5', '9'] integer_list, float_list = separate_float_int(L) print(integer_list) # 输出: [2, 6, 5, 9] print(float_list) # 输出: [3.5, 5.1, 9.8, 7.8, 3.3, 0.5]
方法2:先转浮点数再判断是否为整数
先把所有字符串转为浮点数,再通过is_integer()方法判断该浮点数是否为整数(小数部分为0),是则转为整数存入对应列表,否则保留浮点数:
def separate_float_int(input_list): integers = [] floats = [] for s in input_list: num = float(s) if num.is_integer(): integers.append(int(num)) else: floats.append(num) return integers, floats L = ['2', '3.5', '6', '5.1', '9.8', '7.8', '5', '3.3', '0.5', '9'] integer_list, float_list = separate_float_int(L) print(integer_list) # 输出: [2, 6, 5, 9] print(float_list) # 输出: [3.5, 5.1, 9.8, 7.8, 3.3, 0.5]
两种方法的区别:方法1仅识别纯整数格式的字符串;方法2会把'2.0'这类字符串也识别为整数,存入整数列表。
内容的提问来源于stack exchange,提问作者Hamza KHEDDAR
相关产品推荐
相关产品推荐

