我创建了一个类(item),它只包含位置和状态数据(数字表示项的唯一枚举,状态可以是0,1)。你知道吗
class item:
def __init__(self, number, state):
self.number = number
self.state = state
def __repr__(self):
return('item(%s,%s)'%(self.position,self.state))
我正在尝试为这些项目创建一个容器/集合,其中一个随机子集的状态设置为1,为此,我当前使用:
from random import randint
N = 1024
num_defectives = 10
list_of_items = [item(i,0) for i in range(0,N)]
for i in range(0, num_defectives):
r = randint(0,N)
list_of_items[r].state = 1
但是我想把它包装成一个不是原始列表的东西(因为我认为在我的代码中挂起它不是特别好),而是跟踪项目状态的总和。你知道吗
理想情况下,它还有一个状态为1的项的位置的不可访问列表(我只能查询状态的总和,或者我的子集是否包含状态为1的这些项的成员)。你知道吗
目前,我正在随机选择这个列表的成员,并测试如下状态的总和:
items_to_test = [randint(0,n) for i in range(0,groupSize)]
group = []
for item in items_to_test:
group.append(inList[item])
states = sum([x.state for x in group])
if states:
#do some stuff to find an item with state 1, remove it from list_of_items
else:
#remove all the items in group from list_of_items
基本上,我正在寻找一个更干净的方式来做所有这些行为通过收集。你知道吗
我已经找到了这个问题的答案:
How to subclass Python list without type problems?
还有这个问题:
What to consider before subclassing list?
读一下:
http://docs.python.org/2/reference/datamodel.html#emulating-container-types
但是我仍然不确定从哪里开始(除了子类化对象),因为我对python提供的所有“神奇”函数都相当陌生。。你知道吗
首先在列表周围做一个简单的包装。很可能,你不需要更复杂的东西。我认为您的用例对于子类化
list
来说过于专业化了。你知道吗相关问题 更多 >
编程相关推荐