
前言在Python日常开发中列表list是使用频率最高的数据容器我们经常会遇到各类统计需求获取列表总长度、统计指定元素出现次数、统计复合嵌套列表中目标子列表的数量、条件过滤统计符合规则的元素个数。本文分门别类整理全部常用统计方案附带代码示例与适用场景方便开发时直接复用。一、获取列表全部元素总个数 len()len()是Python内置函数专门用于获取序列、容器内元素总长度是最基础的统计方法。语法len(列表变量)示例代码# 一维普通列表arr[10,20,30,python,True]totallen(arr)print(列表总元素数量,total)# 输出 5# 嵌套列表len只会统计一级元素不会递归内部子列表nest_arr[[0,0],[1,2],99]print(len(nest_arr))# 输出3仅统计外层3个元素适用场景需要知道列表一共有多少个元素不分元素类型、不做筛选时使用。二、统计指定单个元素出现次数 list.count()列表自带count()实例方法快速统计某个值在列表中重复出现的总次数支持数字、字符串、布尔、子列表等可等值对比元素。语法列表.count(目标元素)示例1普通数值统计data[1,0,0,1,0,5]zero_countdata.count(0)print(数字0出现次数,zero_count)# 输出3示例2统计嵌套子列表 [0,0] 数量对应你之前的需求直接使用count统计子列表data[[15,0],[0,0],[0,0],[1,1]]target[0,0]resdata.count(target)print([0,0]子列表数量,res)# 输出2优缺点优点一行代码极简可读性高缺点仅能精准匹配单一固定元素无法做范围、多条件筛选。三、条件过滤统计sum生成器表达式推荐高性能方案如果需要自定义条件统计大于某个数、子列表匹配、字符串模糊匹配等优先使用sum(1 for x in 列表 if 条件)遍历一次完成统计性能优于列表推导式。基础语法countsum(1foritemin列表if判断条件)示例1统计大于3的数字个数nums[1,5,2,8,3,10]countsum(1forxinnumsifx3)print(大于3的数字数量,count)# 输出3示例2统计嵌套列表中 [0,0] 子列表lst[[15,0],[0,0],[0,0],[1,1]]countsum(1foriteminlstifitem[0,0])print(count)# 输出2示例3切片后统计前i个元素中0的数量结合你切片取前i项的需求组合使用d[0,1,2,3,4,5]i3front_partd[:i]# 取出前3个元素 [0,1,2]zero_numsum(1forxinfront_partifx0)print(前3项中0的个数,zero_num)# 输出1四、列表推导式统计先过滤出符合条件的元素生成新列表再用len获取长度逻辑直观适合新手理解。示例data[2,0,0,6,0]# 筛选所有0生成新列表再统计长度zero_list[xforxindataifx0]countlen(zero_list)print(count)# 输出3缺点会额外创建临时列表数据量大时占用更多内存百万级数据推荐使用sum生成器。五、循环手动计数兼容复杂多层逻辑当判断逻辑极其复杂需要中间额外运算、日志打印、分支判断时使用for循环手动累加计数器灵活性最高。示例lst[[15,0],[0,0],[0,0],[1,1]]count0foriteminlst:# 可插入任意复杂逻辑ifitem[0,0]:count1print([0,0]总数,count)# 2六、统计所有元素频次 collections.Counter多元素批量统计如果需要一次性统计列表中所有元素各自出现多少次使用标准库collections.Counter一键生成频次字典。示例代码fromcollectionsimportCounter data[0,0,1,2,0,2,5]counterCounter(data)# 获取单个元素次数print(0出现次数,counter[0])# 3print(2出现次数,counter[2])# 2# 打印全部元素频次print(全部元素统计结果,counter)# Counter({0: 3, 2: 2, 1: 1, 5: 1})拓展嵌套列表无法直接使用Counter子列表不可哈希不能传入Counter此时只能用前文count或sum生成器方案。七、各方法适用场景总结表统计需求推荐方法获取列表总长度len()精准匹配单一固定元素次数list.count()自定义条件筛选统计高性能sum(1 for x in lst if 条件)新手简单逻辑、不在意内存列表推导式len()复杂多层分支逻辑、中间操作for循环手动计数一次性统计所有元素频次collections.Counter八、常见踩坑说明len() 不会递归统计嵌套列表内部元素仅统计外层一级count() 匹配严格等值[0]和(0,)不相等无法互相匹配Counter仅支持可哈希元素数字、字符串、元组列表、字典不可用海量数据统计避免列表推导式优先生成器sum减少内存消耗。结尾以上覆盖Python列表统计的全部主流实现方式从简单长度获取、单一元素计数、条件筛选到全局频次统计均可满足日常业务开发可根据数据规模、逻辑复杂度灵活选择对应方案。文中示例包含嵌套列表统计、切片结合统计等实战场景代码可直接复制到项目中使用。