python设置一个初始为0的计数器_如何为python列表的每个元素实现一个计数器?...

这篇博客介绍了如何在Python中创建一个列表,其中包含一个计数器,每次选择列表中的元素时,对应的计数器都会递增。作者通过定义一个名为clauses的类,扩展了列表的功能,并实现了__init__、__setitem__、__delitem__、append、extend和expand等方法。expand方法用于随机选择列表元素并增加其计数。此外,还讨论了使用字典来跟踪列表中元素的计数,以处理重复项的情况。
摘要由CSDN通过智能技术生成

使用

Python 3.4

我有一种方法可行,但我认为可能有更好的方法.

我希望有一个方法expand()的列表,它从列表中选择一个随机元素,但每次选择该元素时,计数器都会递增.我尝试继承str以便能够添加属性,但它不起作用.

我得到的主要问题是表达式random.randint(0,len(self)-1)和使用局部变量似乎不是Pythonic.在我添加计数器之前,我可以输入random.choice(self)

class clauses(list):

def __init__(self):

self.uses = []

def __setitem__(self,key,value):

self.uses[key]=value

super().__setitem__(self,key,value)

def __delitem__(self,key):

del(self.uses[key])

super().__delitem__(key)

def append(self,value):

self.uses.append(0)

super().append(value)

def extend(self,sequence):

for x in sequence:

self.uses.append(0)

super().append(x)

def expand(self):

n = random.randint(0,len(self)-1)

self.uses[n] += 1

return(self[n])

假设列表中没有重复的条目,初始化空字典以及列表应解决此问题.

将元素添加到列表时,您还可以通过myDict [element] = 0将其添加到字典中,其中myDict是已初始化的字典,element是要添加到列表中的项目.

然后,当选择该项时,您可以简单地执行:myDict [element] = 1.

处理重复条目的实例时,您可以创建字典字典,其中字典中的每个键都是一个单词,并且每个单词的嵌套字典键是,例如,重复单词的索引位置(当然的值)是真正的计数).但是,这会增加实质性的复杂性,因为当您从列表中删除项目时,您还需要更新索引位置.这个嵌套的数据结构虽然如此:{word1:{position1:count1},word2:{position1:count1,position 2:count2} ….}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值