Python学习总结——数字重复统计算法总结(列表+字典)

  • 本博客主要通过截至目前所学所有对数字重复统计的算法进行总结,主要算法分为两类:列表方法、字典方法。
  • 题目:随机产生10个数字,每个数字取值范围[1,20],打印每一个数字及其重复的次数(为避免代码重复,设定这10个随机数存储于列表中[20, 16, 3, 13, 14, 6, 6, 6, 17, 17])
一、列表类方法

1、根据取值范围新建专用于计数的列表,并用count函数统计每个数字的重复数字。

  • 适用于取值范围较小计算,且虽已经进行优化,但使用count函数,效率依旧较低
lst = [20, 16, 3, 13, 14, 6, 6, 6, 17, 17]
count = [0] * 20
for i in lst:
    if count[i-1] != 0:
        continue
    count[i-1] = lst.count(i)
for j in range(len(lst)):
    print('nums:{:<2}  dig:{}'.format(lst[j],count[j-1]))

2、根据取值范围新建专用于计数的列表,记录每个数字的重复数字。

  • 适用于取值范围较小,否则造成内存空间浪费
lst = [20, 16, 3, 13, 14, 6, 6, 6, 17, 17]
count = [0] * 20
for i in lst:
    count[i-1] += 1
for j in range(len(lst)):
    print('nums:{:<2}  dig:{}'.format(lst[j],count[j-1]))
二、字典类方法

1、利用fromkeys构建{keys:重复次数}的字典,利用字典keys不重复特性统计每个数字重复次数

  • 所需内存空间较列表类方法少,效率高
lst = [20, 16, 3, 13, 14, 6, 6, 6, 17, 17]
dic = dict.fromkeys(lst,0)
for i in lst:
    dic[i] += 1
for k,v in dic.items():
    print('nums:{:<2}  dig:{}'.format(k,v))

2、根据列表数字创建空列表,利用dict.get() / dict.setdefault()添加键值对,从而利用字典keys不重复特性统计每个数字重复次数。

  • 所需内存空间较列表类方法少,效率高
lst = [20, 16, 3, 13, 14, 6, 6, 6, 17, 17]
dic = {}
for i in lst:
    dic[i] = dic.get(i,0) + 1     #可替换为dic[i] = dic.setdefault(i,0) + 1
for k,v in dic.items():
    print('nums:{:<2}  dig:{}'.format(k,v))
三、总结
  • 综合比较以上两类方法,在计算数字重复统计类问题时,采用字典方法不仅可以简化代码、减少内存空间利用,而且可较大提升效率。
  • 5
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值