You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何统计Python列表中指定类型元素的出现次数?

问题原因

list.count()的作用是统计列表中与传入参数值完全相等的元素数量,你传入int时,只会匹配列表中值就是int类对象本身的元素,和你预期的「判断元素类型是否符合要求」的逻辑不符。另外你写的type(str)其实返回的是type类本身,也不是你要匹配的str类型,直接传str作为目标类型即可,所以原写法返回结果都为0。

解决方法

用Python内置的sum()配合生成器表达式即可一行实现需求,写法非常简洁:

ex_list = ["string", "data", "item", 1, 3, {3: "im dict"}, "im_item"]

# 统计严格int类型的元素(不包含子类,比如bool不算int)
int_count = sum(type(item) is int for item in ex_list)
print(int_count) # 输出 2

# 统计严格str类型的元素
str_count = sum(type(item) is str for item in ex_list)
print(str_count) # 输出 4

如果需要兼容继承关系(比如认为bool类型属于int的子类,需要被统计到int的数量里),可以把type(item) is xxx替换为isinstance(item, xxx):

test_list = [1, 2, True, False]
# 兼容继承的统计
int_count = sum(isinstance(item, int) for item in test_list)
print(int_count) # 输出 4

如果需要复用这个逻辑,可以封装成自定义工具函数,调用起来和内置的count一样方便:

def count_by_type(lst: list, target_type: type, strict: bool = True) -> int:
    if strict:
        return sum(type(item) is target_type for item in lst)
    return sum(isinstance(item, target_type) for item in lst)

# 调用示例
print(count_by_type(ex_list, int)) # 2
print(count_by_type(ex_list, str)) # 4

内容的提问来源于stack exchange,提问作者MathiasCodes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 23:06:04