Python之统计列表里某元素出现的次数

本文探讨了三种计数列表中特定元素频率的方法:方法1使用for循环,方法2利用列表推导式,方法3借助list自带的count函数。通过实例演示,展示了如何用简洁代码求解8在给定列表中出现的次数为5。

方法1:

def countX(lst, x):
    cnt = 0
    for ele in lst:
        if (ele == x):
            cnt +=1
    return cnt
 lst = [8, 6, 8, 10, 8, 20, 10, 8, 8]
 x = 8
print(countX(lst, x))

打印输出5

方法2:

方法1的变形,用列表推导式;

def countX(lst, x):

s=[1 for e in lst if e==x]

 return  sum(s)
 
lst = [8, 6, 8, 10, 8, 20, 10, 8, 8]
x = 8
print(countX(lst, x))

打印输出5

方法3:

用list自带的count方法实现

lst.count(8)

返回出现次数5

Python 中,统计列表中各元素出现次数有多种方法,以下为你详细介绍: ### 使用 `list.count()` 方法 `list` 对象有一个内置的 `count()` 方法,可以直接统计某个元素列表中出现的次数。可以通过遍历列表中的唯一元素,使用 `count()` 方法统计每个元素的出现次数,并将结果存储在字典中。 ```python Demo_list = [1, 2, 3, 3, 3, 5, 6, 2, 2, 0, 4, 5, 2, 7, 8, 4, 5, 1, 3, 9, 8, 7] Demo_dict = {} for item in set(Demo_list): Demo_dict.update({item: Demo_list.count(item)}) print(Demo_dict) ``` 上述代码先使用 `set()` 函数获取列表中的唯一元素,然后遍历这些唯一元素,使用 `count()` 方法统计其在列表中出现的次数,并将结果存储在字典中,最后打印该字典 [^1]。 ### 常规方法统计 ```python a_list = [4, 6, 3, 8, 9, 0, 3, 3, 7, 1, 4, 6, 7, 3, 4] result = [] for i in a_list: if i not in result: result.append(i) for i in result: print("元素", i, "在列表中出现了", a_list.count(i), "次") ``` 此代码通过遍历列表,将未出现过的元素添加到 `result` 列表中,再遍历 `result` 列表,使用 `count()` 方法统计每个元素在原列表中出现的次数并打印 [^2]。 ### 不使用 `list.count()` 方法 ```python a_list = [4, 6, 3, 8, 9, 0, 3, 3, 7, 1, 4, 6, 7, 3, 4] result = [] for i in a_list: if i not in result: result.append(i) num = [0 for i in range(len(result))] for i in range(len(result)): for j in a_list: if result[i] == j: num[i] += 1 for i in range(len(num)): print("元素{0}在列表中出现的次数:{1}".format(result[i], num[i])) ``` 该代码同样先获取列表中的唯一元素,然后使用双重循环统计每个元素的出现次数,外层循环遍历唯一元素,内层循环遍历原列表,若元素相等则对应计数加 1,最后格式化输出结果 [^2]。 ### 使用 `collections.Counter` `collections.Counter` 是 Python 内置的一个类,用于统计可哈希对象的元素出现次数。 ```python from collections import Counter my_list = [1, 2, 3, 2, 1, 4, 2] counter = Counter(my_list) print(counter) ``` 上述代码导入 `Counter` 类,将列表传入 `Counter` 类的构造函数,即可得到一个包含元素及其出现次数的计数器对象,最后打印该对象 [^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值