Python混合类型列表拆分:整数、字符串、浮点数分类实现求助
按原生类型拆分混合列表的正确实现
我明白你想要的是根据元素本身的原生数据类型来拆分这个混合列表——把原本就是整数的放进整数列表,原本是浮点数的放进浮点数列表,剩下的字符串(哪怕看起来像数字的)都放进字符串列表。你的原代码问题出在尝试转换元素类型来判断,而不是直接检查元素本身的类型,所以把能转成int的字符串也误放进了整数列表。
正确实现代码
直接通过检查元素的原生类型来分类:
trylist = [9,0,-5,1,-600,'Europe','-9',4,'English',0.7,5.9,'0','-2','-3.7','Python'] # 初始化三个目标列表 int_list = [] float_list = [] str_list = [] for item in trylist: if isinstance(item, int): int_list.append(item) elif isinstance(item, float): float_list.append(item) elif isinstance(item, str): str_list.append(item) # 如果有其他类型需要处理,可以在这里加else分支 # 输出结果 print("整数列表:", int_list) print("浮点数列表:", float_list) print("字符串列表:", str_list)
运行结果
整数列表: [9, 0, -5, 1, -600, 4] 浮点数列表: [0.7, 5.9] 字符串列表: ['Europe', '-9', 'English', '0', '-2', '-3.7', 'Python']
为什么原代码不对?
你的原代码用try...except尝试把元素转成整数,这种方式是判断元素是否可以被转换为int,而不是判断元素本身是不是int类型。比如字符串'-9'可以被int()函数转换成整数,所以会被误加入整数列表,但你想要的是原列表中本身就是int类型的元素,所以直接检查类型才是正确的思路。
补充说明
如果之后你有其他需求(比如把字符串形式的数字也转成对应类型加入列表),可以调整逻辑,但根据你给出的预期结果,上面的代码完美匹配你的需求。
内容的提问来源于stack exchange,提问作者Ricky101
相关产品推荐
相关产品推荐

