python统计列表中各元素出现的次数

  1. 第一种方法
    最常规的方法`
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)
        print("元素", i, "在列表中出现了", a_list.count(i), "次")
元素 4 在列表中出现了 3 次
元素 6 在列表中出现了 2 次
元素 3 在列表中出现了 4 次
元素 8 在列表中出现了 1 次
元素 9 在列表中出现了 1 次
元素 0 在列表中出现了 1 次
元素 7 在列表中出现了 2 次
元素 1 在列表中出现了 1
如果没有a_list.count()函数也可以自己写
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
print(num)
然后格式化输出即可
for i in range(len(num)):
    print("元素{0}在列表中出现的次数:{1}".format(result[i], num[i]))
没有使用a_list.count()的完整代码
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. `第二种方法

首先可以引入集合达到去重的目的,列表转集合可以去掉重复的元素
再通过集合转列表,集合不可以通过索引和切片的方式访问元素

# 列表转化为集合(数字的话是默认从小到大排好序的)
第一种:a_set = set(a_list)
第二种:a_set.update(a_list)
#列表转化为集合
new_list = list(a_set)
a_list = [2, 4, 5, 6, 0, 3, 2, 3, 4, 0, 0, 6, 4]
a_set = set(a_list)  # 列表转化为集合或a_set.update(a_list)
new_list = list(a_set)  # 转化过程中直接去重,直接list(a_set)
print(new_list)
number = [0 for i in range(len(new_list))]  #列表推导式初始化number[]
for i in range(len(new_list)):
    for j in range(len(a_list)):
        if new_list[i] == a_list[j]:
            number[i] += 1
for i in range(len(number)):
    print("元素{0}在列表中出现的次数:{1}".format(new_list[i], number[i]))
   
[0, 2, 3, 4, 5, 6]
元素0在列表中出现的次数:3
元素2在列表中出现的次数:2
元素3在列表中出现的次数:2
元素4在列表中出现的次数:3
元素5在列表中出现的次数:1
元素6在列表中出现的次数:2
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐