Python列表各数据类型元素数量统计实现方法咨询
统计Python列表各数据类型元素个数的实现方案
给定待统计示例列表:
elements = [2, 3, 'Py', '10', 1, 'SQL', 5.5, True, 3, 'John', None, 7]
核心实现思路
- 遍历列表内每个元素,精准获取元素对应的实际类型
- 用字典类计数结构做累计,以类型作为键、对应元素出现次数作为值
- 遍历完成后整理成可读格式输出统计结果
关键注意点:Python中bool类型是int的子类,如果使用isinstance()做类型归属判断,会出现布尔值被归为整数的情况,优先使用type()做精准类型匹配可以避免这类统计偏差
基础实现版本
不需要依赖额外库,纯原生语法实现,兼容性最高:
elements = [2, 3, 'Py', '10', 1, 'SQL', 5.5, True, 3, 'John', None, 7] type_stat = {} for item in elements: item_type = type(item) # 字典get方法实现计数累加,不存在的键默认值为0 type_stat[item_type] = type_stat.get(item_type, 0) + 1 # 格式化输出结果 for type_obj, count in type_stat.items(): print(f"类型 {type_obj.__name__}: 元素个数 {count}")
运行后输出结果为:
类型 int: 元素个数 5 类型 str: 元素个数 4 类型 float: 元素个数 1 类型 bool: 元素个数 1 类型 NoneType: 元素个数 1
简洁优化版本
借助标准库collections.Counter简化计数逻辑,代码更精简:
from collections import Counter elements = [2, 3, 'Py', '10', 1, 'SQL', 5.5, True, 3, 'John', None, 7] # 生成器表达式逐元素提取类型,直接传给Counter完成统计 type_stat = Counter(type(item) for item in elements) # 输出结果逻辑和基础版本一致 for type_obj, count in type_stat.items(): print(f"类型 {type_obj.__name__}: 元素个数 {count}")
如果有需要按继承关系统计的需求(比如将布尔值归入整数类下计数),可以手动调整类型判断规则,替换type(item)的获取逻辑即可。
内容的提问来源于stack exchange,提问作者vishal chaudhary
相关产品推荐
相关产品推荐

