我遇到了一个恼人的问题,我有一个int,我想看看这个int在一个集合中是否等价。如果是这样,我不希望它出现在我的“nset”值中。然而,当我尝试这样做时(这看起来很简单),它的行为就像该项没有被正确过滤一样。你知道吗
日志示例:
RDM is 8
RDM is not in
{1, 5, 6, 7, 8, 9}
{1, 3, 4, 5, 7, 8}
{2, 5, 6, 7, 8}
代码:
nset = list(range(1, self.n2 + 1))
for i in nset:
if(i in self.valuesInRows[space[0]]):
nset.remove(i)
elif(i in self.valuesInCols[space[1]]):
nset.remove(i)
elif(i in self.valuesInBoxes[self.spaceToBox(space[0], space[1])]):
nset.remove(i)
rdm = -1
while(rdm not in nset):
rdm = random.randint(0, self.n2)
print("RDM {}".format(rdm))
print("RDM is {}".format(rdm))
print("RDM is not in")
print(self.valuesInBoxes[self.spaceToBox(space[0], space[1])])
print(self.valuesInRows[space[0]])
print(self.valuesInCols[space[1]])
print()
return rdm
任何解释都会非常棒,因为我看过文档,它表明这是我想做的方法,但我似乎遗漏了一些东西。你知道吗
您使用的是列表而不是集合。列表是按顺序存储值的标准Python数据类型。集合是另一种标准的Python数据类型,它也存储值。主要区别在于,与列表或元组不同,集合不能多次出现同一元素并存储无序值。你知道吗
根据定义,集合不允许重复值。在列表中,在插入值之前,必须通过
in
关键字检查出现情况。你知道吗相关问题 更多 >
编程相关推荐