我如何确定一个项目是否在一个集合中?

2024-09-30 10:34:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我遇到了一个恼人的问题,我有一个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

任何解释都会非常棒,因为我看过文档,它表明这是我想做的方法,但我似乎遗漏了一些东西。你知道吗


Tags: inselfisnotspaceremoveintprint
1条回答
网友
1楼 · 发布于 2024-09-30 10:34:17

您使用的是列表而不是集合。列表是按顺序存储值的标准Python数据类型。集合是另一种标准的Python数据类型,它也存储值。主要区别在于,与列表或元组不同,集合不能多次出现同一元素并存储无序值。你知道吗

根据定义,集合不允许重复值。在列表中,在插入值之前,必须通过in关键字检查出现情况。你知道吗

  1. https://docs.python.org/3/reference/expressions.html#membership-test-operations

相关问题 更多 >

    热门问题